2023年6月22日发(作者:)
!Error!VC6.0应用OpenCV出现的错误及解决办法王琼西安交大控制工程研究所eagle-sky@2.2也添加了相关路径。。。。。。(P267<>)未通过编译,程序运行时报错fatalerrorC1083:Cannotopenincludefile:'cv.h':Nosuchfileordirectory。解决办法:由于编程软件使用的是VC6.0,建议用OpenCV1.0。2.安装OpenCV1.0,进行相关的全局设置。不要忘了添加lib,否则连接时报错“LINK:fatalerrorLNK1181:cannotopeninputfile"...."执行时出错.”3.问题描述:编译没问题,但运行时出现如下警告对话框。Couldnotexecute:invaliddirectory(Win32error267)解决办法:造成这个错误的原因主要是运行别人的程序时,设置不正确.,工程—>设置,问题出在右边“调试”标签的“工作目录”和你现在运行工程的目录不一致。把工作目录中的路径去掉即可。re=cvCaptureFromFile(szVideoFileName);不能打开AVI视频文件,解决办法:网上下载一个“K-LiteCodecPackFull3.9.3Beta”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。5.新建工程后,程序编译时报错:errorLNK2001:unresolvedexternalsymbol_:errorLNK2001:unresolvedexternalsymbol_:errorLNK2001:unresolvedexternalsymbol_:errorLNK2001:unresolvedexternalsymbol_:errorLNK2001:unresolvedexternalsymbol_:errorLNK2001:unresolvedexternalsymbol_cvLoadImageDebug/:fatalerrorLNK1120:6unresolvedexternals执行时出错.解决办法:工程-》设置-》连接中,添加对象/库模块即可,如下图(需要用到即可加载几个)。6.图像显示路径问题if((pImg=cvLoadImage("E:毕业论文相关VC程序练习",1))==0)提示警告错误:warningC4129:'V':unrecognizedcharacterescapesequence解决办法:单斜杠变成双斜杠。(双引号括起来)。7.编译没错误,运行后出现错误窗口,如下所示:badflag(parameterorstructurefield)(Unrecognizedorunsupportedarraytype)while(1)//!!<葉正聖老師教研究生學opencv[程式集訓]>{image=cvQueryFrame(capture1);cvSaveImage("",image);cvShowImage("TrackingDemo","");。。。。。。}解决办法:图像显示函数中的""改成image即可。8.程序运行中,按Esc键,出现错误报警窗口,或者内存释放语句放在图像显示循环语句中,只显示了第一帧就报错。Unknownerrorcode-49(Deallocationerror)infunctioncvFree_,C:(129)解决办法:image=cvQueryFrame(pCapture))返回的图像image用cvReleaseImage释放了!把语句“cvReleaseImage(&image);”去掉。切记,cvQueryFrame获得的指针千万不能释放!和cvCvtColor函数对图像处理后,图像上下变反,倒置了,左右没反。解决办法:图像的origin参数变了,设置为1即可,加代码“GrayImage->origin=1;”。原因为cvCreateImage得到的图像文件,其origin都为0,而从摄像头或视频文件中获取的帧图像,其origin都为1.10.运行完了之后,Nullpointer(NULLarraypointerispassed)出现错误报警窗口:infunctioncvGetMat,C:(2780).解决办法:判断是否抓取的最后一帧,若是,image=cvQueryFrame(capture1);返回的指针为NULL,这时用语句break退出,if(image==NULL)break;。或者,图像格式都初始化一样的,如channel都取1(单通道,灰度图像)。11.把语句cvSaveImage("",image);去掉,则出现下面的错误:Badargument(ArrayshouldbeCvMatorIplImage)infunctioncvGetSize,C:(1453).解决办法:cvGetSize(image)中image未提前定义大小,把image=cvQueryFrame(capture1);放在之前即可。12.加入计算灰度直方图的函数,编译没有错误,运行之后TrackingDemo闪了一下,然后没反应。调试运行,到函数int*GetGrayhist(IplImage*img)的内部语句inti=ptr[x];时停止运行,提示警告窗口如下。“:0xc0000005:AccessViolation.”解决办法:把函数体内两个for循环之内的语句“uchar*ptr=(uchar*)(img->imageData+y*img->widthStep);”放到后一个for语句体内,改成“i=((uchar*)(img->imageData+y*img->widthStep))[x];”。2679:binary'=':nooperatordefinedwhichtakesaright-handoperandoftype'struct_IplImage*'(orthereisnoacceptableconversion)错误指向语句img02=cvCreateImage(cvGetSize(img00),IPL_DEPTH_8U,3);解决办法:变量批量定义时,指针“*”容易忘记写,语句:IplImage*img01,img02;改成IplImage*img01,*img02;14.问题描述:原因:数组越界,图像的宽和高与矩阵中的(x,y)的区别。解决办法:for(inty=0;yheight;y++){for(intx=0;xwidth;x++){s=cvGet2D(img00,x,y);//Getthex,y)pixelvaluex和y顺序对调。注意,在图像矩阵中,(y,x)表示y行x列的点。2065:'cout':undeclaredidentifiererrorC2296:'<<':illegal,leftoperandhastype'double'原因:include中的没有定义全局命名空间。解决办法:要么包含,要么在程序中加usingnamespacestd。16.“():errorLNK2001:unresolvedexternalsymbol__():errorLNK2001:unresolvedexternalsymbol__beginthreadexDebug/临界区.exe:fatalerrorLNK1120:2unresolvedexternals执行时出错.临界区.exe-1error(s),0warning(s)”原因:这是线程同步中遇到的问题,使用CCriticalSection类操作临界区,由于CCriticalSection类是MFC中所定义的临界区类,因此所用的控制台程序的工程必须设置对MFC包含。解决办法:点击“工程”菜单,选择“设置”,在“ProjectSettings”对话框中选择“常规”项,在“Microsoft基础类”的下拉菜单中选择“使用MFC作为共享的DLL”,点击“确定”即可。17.编译时出现错误:“LINK:fatalerrorLNK1168:cannotopenDebug/基于PT转台的视频跟踪软件设计.exeforwriting”原因:上次运行程序没有关闭,程序还在运行过程中。到“任务管理器”中,看是否有你编译的程序在运行,强制关闭后,再编译。运行后点击一个按钮,界面变成没有响应,.exe文件在Windows18.编写了一个MFC程序,任务管理器中也删除不了?解决办法:CPTDlg::OnBTSetVideo()函数中加“初始化视频调节窗口”语句。异常处理问题描述:工作区内不显示新加的类名(类不显示)解决办法:删除.clw和.ncb文件,然后类向导里面加入.clw文件;或者工程-增加到工程-文件然后选择你的.CPP和.H文件,加入后类窗口中即可显示新类。工程:摄像机读入视频Learning_OpenCV_/**从相机中获取图像并进行处理20120326**///From:E:毕业论文相关更新FilterResearchOpenCVLearningOpenCV_Codech2_ex2_问题描述:编译时,出现DebugError!abnormalprogramtermination。Abnormalprogramtermination程序异常终止。通常是由于内存使用不当所致解决办法:目前还没有解决,考虑是否因为帧频间隔时间和cvWaitKey(n)中的n不一致所致?或者图像缓存的空间设置问题等??!!!21.为了//加载位图改变界面背景20120328,在CPTDlg的构造函数中加CDC*pDC=GetDC();解决办法:pDC定义的位置得改变。pDC=GetDC();放入函数BOOLCPTDlg::OnEraseBkgnd(CDC*pDC)!?还是不能加载图片到对话框界面上!!!???22.问题描述:基于PT转台的视频跟踪软件设计:errorLNK2001:unresolvedexternalsymbol_cvCreateImage解决办法:除了文件外,工程->设置->连接->对象/库模块中添加所需的OpenCV库文件如下图所示,23.问题描述:添加类型转换函数GetIplFromBmp,然后在窗口显示,调试没有问题,运行后出现下列错误OpenCVGUIErrorHandler:Oneofarguments’valuesisoutofrange(NegativeortoolargeargumentofcvAllocfunction)infunctioncvAlloc,C:(106)分析:文件中r105if((size_t)size>CV_MAX_ALLOC_SIZE)r106CV_ERROR(CV_StsOutOfRange,r107"NegativeortoolargeargumentofcvAllocfunction");单步调试运行,出现下列错误Unhandledexceptionin….exe():0xC0000005:AccessViolation.解决办法:由于使用了别人提供的由BMP转换为IplImage的类型转换函数GetIplFromBmp,建议使用OpenCV自带的cvSetData函数(From《OpenCV例程说明》),见问题25。24.20120406把IEU_MSG消息处理函数IEUMsgProc中的语句cvNamedWindow("图像显示",1);cvShowImage("图像显示",Iimage);注释掉,出现下面错误。OpenCVGUIErrorHandler:Unknownerrorcode-25(Badinputroi)infunctioncvInitImageHeader,C:(3363)R3362R3363if(<0||<0)CV_ERROR(CV_BadROISize,"Badinputroi");解决办法:把Iimage=GetIplFromBmp(m_pDataBuf);注释掉,程序正常运行,图像显示窗口也出现,只是没有Iimage图像而已。25.//FromCvSizecvSize;=m_nImageWidth;=m_nImageHeight;IplImage*iplImage=cvCreateImageHeader(cvSize,IPL_DEPTH_8U,1);消息处理函数的循环体内加语句cvSetData(iplImage,m_pDataBuf,m_nImageWidth);调试没问题,运行后出现了显示图像的窗口,但出现下列错误r127r128r129CVStatusstatus=p_cvFree(ptr,p_cvAllocUserData);if(status<0)CV_ERROR(status,"Deallocationerror");解决办法:参见上面的问题8,把cvReleaseImage(&iplImage);注释掉即可。26.e:毕业论文相关vc程序练习201108ch10ex102学习opencvch10ex102学习(132):fatalerrorC1010:unexpectedendoffilewhilelookingforprecompiledheaderdirectivecvx_:毕业论文相关vc程序练习201108ch10ex102学习opencvcvx_(41):fatalerrorC1010:并且光标指向两个文件的末尾处。原因:“可能原因为工程中stdafx.h未包含。//在VC6.0中编译c++程序时报该错原因为需要一个预编译的文件stdafx.h,如果不需要编译该头文件的话,只需要打开seting页面设置中在c/c++栏,选择PreCompiledheaders,然后设置第一选项,选择不使用预编译头,解决这个问题。”解决办法:工程-》设置-》C/C++,在分类中选择“预编译的头文件”,在下面的选项中选择第一个“不使用预补偿页眉”,确定即可。27.帧间差分图像是有拖影的图像《VC工程:Camshift目标跟踪-边缘检测》原因:hue为每帧图像转化成了的灰度图像,if(icount==2)//判断是否第一帧(之前定义了inticount=1){cvCopy(hue,image1,NULL);//是第一帧则把它复制到image1中}cvCopy(hue,image2,NULL);//把每帧的灰度图像复制到image2中cvAbsDiff(image1,image2,hue);//当前帧减去上一帧,保存在hue中//注意,若是第一帧,则是自身相减循环后面加得到上一帧图像的语句,即把当前帧作为下一帧的前一帧cvCopy(hue,image1,NULL);此时hue为差分后的图像,而不是原始图像,故出现疑似拖尾现象。解决办法:cvCopy(hue,image1,NULL);hue改成image2。2064:termdoesnotevaluatetoafunction;指向程序语句:histimg=cvCreateImage(cvSize(320,200),8,3);原因:存在函数未被定义或者重复定义!!!解决办法:仔细检查,cvSize是opencv的函数,获得CvSize类型,cvCreateImage也是opencv的函数,搜索cvSize,发现之前有一条语句“CvSizecvSize;”,把函数cvSize定义成了变量,把它改成cvsize,编译通过。后记:定义变量时,一定要避开相关关键字和函数名,切记!!GUIErrorHandler:Formatsofinputargumentsdonotmatch()infunctioncvCopy原因:cvCopy(iplImage,image,0);中的iplImage之前定义为一通道的(灰度图像),而image为三通道的(彩色图像),格式不匹配。把IplImage定义为3通道的,然后点击“打开相机”,出现下面错误:Imagestepiswrong()infunctioncvSetData,把image改成单通道的(灰度图像)???!!!变成处理黑白图像???!!!解决办法://20120421把m_pDataBuf换成m_pRgbBuf(彩色图像数据),并且之前的CreateImage通道为3cvSetData(iplImage,m_pRgbBuf,m_nImageWidth*3);//末尾参数应该乘以3!!!g...LINK:fatalerrorLNK1168:cannotopenDebug/基于PT转台的视频跟踪软件设计.exeforwriting原因:.exe程序正在运行,不能重写。解决办法:在任务管理器中,把进程.exe关掉!!2664:'cvSetMouseCallback':cannotconvertparameter2from'void(int,int,int,int,void*)'to'void(__cdecl*)(int,int,int,int,void*)'Noneofthefunctionswiththisnameinscopematchthetargettype原因:解决办法:将on_mouse函数定义成静态函数static。接着出现以下错误:errorC2597:illegalreferencetodatamember'CPTDlg::select_object'inastaticmemberfunction解决办法:静态函数要访问类的非静态成员,需做以下处理MylplClass*temp=(MylplClass*)param;switch(event){caseCV_EVENT_MOUSEMOVE:{temp->a=...;temp->b=...;......}......}}32.点击调试????dWindow("帧差后的图像iplImage3",1);cvShowImage("帧差后的图像iplImage3",iplImage3);运行后图像窗口一直在闪烁!解决办法:把窗口名字中的iplImage3去掉即可正常显示。或者改成其它的,不用图像变量iplImage3即可,猜测可能是窗口名字与变量冲突!!?cvDestroyWindow的缘故??Image(szSaveName,iplImage4);出错??解决办法:图片保存的文件名应该指明图片格式,在此,应该给szSaveName添加.jpg字符,代码如下:char*last_name=".jpg";strcat(szSaveName,last_name);
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687430057a9410.html
评论列表(0条)