,报错信息“引发了异常:写入权限冲突。this->u是0x01”,一头雾水,不知什么原因造成的,求助!
前面的代码发出来看看
// 这是出错的函数
void CPatternB::DetectLabelChar(Mat srcMat,CvRect detectRect,int detectCode)
{
// 标签印字检测
Mat srcMat0;
srcMat0.create(srcMat.rows, srcMat.cols, IPL_DEPTH_8U);
srcMat.copyTo(srcMat0);
char labelChar[256] = { 0 };
CvRect labelRect = cvRect(0, 0, 0, 0);
string strInfo = pDetection->GetLabelChar(srcMat0, detectRect, 0, 0, 0, labelRect, labelChar, (byte*)GetMarkImg()->imageData);
// 识别字符与二维码字符比较
int i = 0;
int correctCnt = 0;
while ((labelChar[i]!='\0')&& (i<256))
{
if (mGlobal.detectResultInfo[numStation].totalInfo.code2D[i] == labelChar[i])
{
// 字符纠正
correctCnt++;
}
else
{
// 52为2个ASCII码十进制数的均值
if (
(abs(mGlobal.detectResultInfo[numStation].totalInfo.code2D[i]-52)==3)&&(abs(labelChar[i]-52)==3) // 1<--->7
)
{
correctCnt++;
}
}
i++;
}
// 测信息录入
DetectInfoS info;
info.detectRect = detectRect;
if (strInfo=="NG"||correctCnt<19)
{
info.status = true;
Mat markMat = Mat::zeros(Size(srcMat0.cols, srcMat0.rows), CV_8UC3);
cvtColor(srcMat0, markMat, CV_GRAY2BGR);
memcpy(markMat.data, (byte*)GetMarkImg()->imageData, srcMat0.cols*srcMat0.rows * 3);
rectangle(markMat, labelRect, Scalar(0, 0, 255), 2);
memcpy((byte*)GetMarkImg()->imageData, markMat.data, srcMat0.cols*srcMat0.rows * 3);
imwrite("D:\\temp\\DetectLabelChar_markMat.bmp", markMat);
}
else
{
info.status = false;
Mat markMat = Mat::zeros(Size(srcMat0.cols, srcMat0.rows), CV_8UC3);
cvtColor(srcMat0, markMat, CV_GRAY2BGR);
memcpy(markMat.data, (byte*)GetMarkImg()->imageData, srcMat0.cols*srcMat0.rows * 3);
rectangle(markMat, labelRect, Scalar(0, 255, 0), 2);
imwrite("D:\\temp\\DetectLabelChar_markMat.bmp",markMat);
memcpy((byte*)GetMarkImg()->imageData, markMat.data, srcMat0.cols*srcMat0.rows * 3);
}
info.code = (RECT_LABEL| DETECT_CHAR);
strcpy(info.ptnName,"PatternB");
mResultInfoB.SetDetectResultInfo(info,numStation,info.status);
}
你这个是不是把opencv的release版的lib库放在了debug的链接器选项中了