VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx

上传人:b****4 文档编号:17553084 上传时间:2022-12-07 格式:DOCX 页数:18 大小:754.32KB
下载 相关 举报
VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx_第1页
第1页 / 共18页
VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx_第2页
第2页 / 共18页
VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx_第3页
第3页 / 共18页
VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx_第4页
第4页 / 共18页
VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx

《VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

VC60应用OpenCV 出现的错误及解决办法Word文档下载推荐.docx

directory 

(Win32 

error 

267)

造成这个错误的原因主要是运行别人的程序时,设置不正确.,工程—>

设置,问题出在右边“调试”标签的“工作目录”和你现在运行工程的目录不一致。

把工作目录中的路径去掉即可。

4.pCapture=cvCaptureFromFile(szVideoFileName);

不能打开AVI视频文件,

网上下载一个“K-LiteCodecPackFull3.9.3Beta”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。

5.新建工程后,程序编译时报错

Linking...

LoadImage01Dlg.obj:

errorLNK2001:

unresolvedexternalsymbol_cvReleaseImage

unresolvedexternalsymbol_cvDestroyWindow

unresolvedexternalsymbol_cvWaitKey

unresolvedexternalsymbol_cvShowImage

unresolvedexternalsymbol_cvNamedWindow

unresolvedexternalsymbol_cvLoadImage

Debug/LoadImage01.exe:

fatalerrorLNK1120:

6unresolvedexternals

执行link.exe时出错.

工程-》设置-》连接中,添加对象/库模块cxcore.libcv.libml.libcvaux.libhighgui.libcvcam.lib即可,如下图(需要用到即可加载几个)。

6.图像显示路径问题

if((pImg=cvLoadImage("

E:

\毕业论文相关\VC程序练习201108\LoadImage01\testpic.jpg"

1))==0)

提示警告错误:

warningC4129:

V'

:

unrecognizedcharacterescapesequence

单斜杠变成双斜杠。

(双引号括起来)。

7.编译没错误,运行后出现错误窗口,如下所示:

badflag(parameterorstructurefield)(Unrecognizedorunsupportedarraytype)

while

(1)//!

葉正聖老師教研究生學opencv[程式集訓]>

{image=cvQueryFrame(capture1);

cvSaveImage("

frame0.jpg"

image);

cvShowImage("

TrackingDemo"

"

);

}

图像显示函数中的"

改成image即可。

8.程序运行中,按Esc键,出现错误报警窗口,或者内存释放语句放在图像显示循环语句中,只显示了第一帧就报错。

Unknownerrorcode-49(Deallocationerror)infunctioncvFree_,C:

\User\VP\opencv\cxcore\src\cxalloc.cpp(129)

image=cvQueryFrame(pCapture))返回的图像image用cvReleaseImage释放了!

把语句“cvReleaseImage(&

image);

”去掉。

切记,cvQueryFrame获得的指针千万不能释放!

9.cvCopy和cvCvtColor函数对图像处理后,图像上下变反,倒置了,左右没反。

图像的origin参数变了,设置为1即可,加代码“GrayImage->

origin=1;

”。

原因为cvCreateImage得到的图像文件,其origin都为0,而从摄像头或视频文件中获取的帧图像,其origin都为1.

10.运行完了之后,出现错误报警窗口:

Nullpointer(NULLarraypointerispassed)infunctioncvGetMat,C:

\User\VP\opencv\cxcore\src\cxarray.cpp(2780).

判断是否抓取的最后一帧,若是,image=cvQueryFrame(capture1);

返回的指针为NULL,这时用语句break退出,if(image==NULL)break;

或者,图像格式都初始化一样的,如channel都取1(单通道,灰度图像)。

11.把语句cvSaveImage("

去掉,则出现下面的错误:

Badargument(ArrayshouldbeCvMatorIplImage)infunctioncvGetSize,C:

\User\VP\opencv\cxcore\src\cxarray.cpp(1453).

cvGetSize(image)中image未提前定义大小,把image=cvQueryFrame(capture1);

放在之前即可。

12.加入计算灰度直方图的函数,编译没有错误,运行之后TrackingDemo闪了一下,然后没反应。

调试运行,到函数int*GetGrayhist(IplImage*img)的内部语句inti=ptr[x];

时停止运行,提示警告窗口如下。

“UnhandledexceptioninVideoReadSave.exe:

0xc0000005:

AccessViolation.”

把函数体内两个for循环之内的语句“uchar*ptr=(uchar*)(img->

imageData+y*img->

widthStep);

”放到后一个for语句体内,改成“i=((uchar*)(img->

widthStep))[x];

20120306

13.errorC2679:

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;

y<

img00->

height;

y++)

{

for(intx=0;

x<

width;

x++)

s=cvGet2D(img00,x,y);

//Getthex,y)pixelvalue

x和y顺序对调。

注意,在图像矩阵中,(y,x)表示y行x列的点。

15.errorC2065:

cout'

undeclaredidentifier

errorC2296:

'

illegal,leftoperandhastype'

double'

include中的<

iostream>

没有定义全局命名空间。

要么包含<

iostream.h>

,要么在程序中加usingnamespacestd。

16.“Linking...

nafxcwd.lib(thrdcore.obj):

unresolvedexternalsymbol__endthreadex

unresolvedexternalsymbol__beginthreadex

Debug/临界区.exe:

2unresolvedexternals

临界区.exe-1error(s),0warning(s)”

这是线程同步中遇到的问题,使用CCriticalSection类操作临界区,由于CCriticalSection类是MFC中所定义的临界区类,因此所用的控制台程序的工程必须设置对MFC包含。

点击“工程”菜单,选择“设置”,在“ProjectSettings”对话框中选择“常规”项,在“Microsoft基础类”的下拉菜单中选择“使用MFC作为共享的DLL”,点击“确定”即可。

17.编译时出现错误:

“LINK:

fatalerrorLNK1168:

cannotopenDebug/基于PT转台的视频跟踪软件设计.exeforwriting”

上次运行程序没有关闭,程序还在运行过程中。

到“任务管理器”中,看是否有你编译的程序在运行,强制关闭后,再编译。

18.编写了一个MFC程序,运行后点击一个按钮,界面变成没有响应,.exe文件在Windows任务管理器中也删除不了?

CPTDlg:

OnBTSetVideo()函数中加“初始化视频调节窗口”语句。

19.VC异常处理

问题描述:

工作区内不显示新加的类名(类不显示)

删除.clw和.ncb文件,然后类向导里面加入.clw文件;

或者工程-增加到工程-文件然后选择你的.CPP和.H文件,加入后类窗口中即可显示新类。

20.VC工程:

摄像机读入视频Learning_OpenCV_CH2.cpp

/**从相机中获取图像并进行处理20120326**/

//From:

\毕业论文相关\更新FilterResearch\OpenCV\LearningOpenCV_Code\ch2_ex2_9.cpp

编译时,出现DebugError!

abnormalprogramtermination。

Abnormalprogramtermination程序异常终止。

通常是由于内存使用不当所致

目前还没有解决,考虑是否因为帧频间隔时间和cvWaitKey(n)中的n不一致所致?

或者图像缓存的空间设置问题等?

21.为了//加载位图改变界面背景20120328<

VC之美化界面篇。

.pdf>

,在CPTDlg的构造函数中加CDC*pDC=GetDC();

pDC定义的位置得改变。

pDC=GetDC();

放入函数BOOLCPTDlg:

OnEraseBkgnd(CDC*pDC)

还是不能加载图片到对话框界面上!

22.问题描述:

基于PT转台的视频跟踪软件设计Dlg.obj:

unresolvedexternalsymbol_cvCreateImage

除了gt400.libDrawUtil.libRaw2Rgb.libIEUCap.lib文件外,工程->

设置->

连接->

对象/库模块中添加所需的OpenCV库文件如下图所示,

cxcore.libcv.libml.libcvaux.libhighgui.libcvcam.lib

23.

添加类型转换函数GetIplFromBmp,然后在窗口显示,调试没有问题,运行后出现下列错误OpenCV GUI ErrorHandler:

Oneofarguments’valuesisoutofrange(NegativeortoolargeargumentofcvAllocfunction)infunctioncvAlloc,C:

\User\VP\opencv\cxcore\src\cxalloc.cpp(106)

分析:

cxalloc.cpp文件中

r105if((size_t)size>

CV_MAX_ALLOC_SIZE)

r106CV_ERROR(CV_StsOutOfRange,

r107"

NegativeortoolargeargumentofcvAllocfunction"

);

单步调试运行,出现下列错误Unhandledexceptionin….exe(MSVCRTD.DLL):

0xC0000005:

AccessViolation.

由于使用了别人提供的由BMP转换为IplImage的类型转换函数GetIplFromBmp,建议使用OpenCV自带的cvSetData函数(From《OpenCV例程说明》),见问题25。

24.20120406

把IEU_MSG消息处理函数IEUMsgProc中的语句cvNamedWindow("

图像显示"

1);

Iimage);

注释掉,出现下面错误。

OpenCV GUI ErrorHandler:

Unknownerrorcode-25(Badinputroi)infunctioncvInitImageHeader,C:

\User\VP\opencv\cxcore\src\cxarray.cpp(3363)

R3362if(size.width<

0||size.height<

0)

R3363CV_ERROR(CV_BadROISize,"

Badinputroi"

把Iimage=GetIplFromBmp(m_pDataBuf);

注释掉,程序正常运行,图像显示窗口也出现,只是没有Iimage图像而已。

25.

//From<

OpenCV例程说明>

CvSizecvSize;

cvSize.width=m_nImageWidth;

cvSize.height=m_nImageHeight;

IplImage*iplImage=cvCreateImageHeader(cvSize,IPL_DEPTH_8U,1);

消息处理函数的循环体内加语句cvSetData(iplImage,m_pDataBuf,m_nImageWidth);

调试没问题,运行后出现了显示图像的窗口,但出现下列错误

r127CVStatusstatus=p_cvFree(ptr,p_cvAllocUserData);

r128if(status<

r129CV_ERROR(status,"

Deallocationerror"

参见上面的问题8,把cvReleaseImage(&

iplImage);

注释掉即可。

26.

e:

\毕业论文相关\vc程序练习201108\ch10ex102学习opencv\ch10ex102学习opencv.cpp(132):

fatalerrorC1010:

unexpectedendoffilewhilelookingforprecompiledheaderdirectivecvx_defs.cpp

\毕业论文相关\vc程序练习201108\ch10ex102学习opencv\cvx_defs.cpp(41):

unexpectedendoffilewhilelookingforprecompiledheaderdirectiveGeneratingCode...

并且光标指向两个文件的末尾处。

“可能原因为工程中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为差分后的图像,而不是原始图像,故出现疑似拖尾现象。

hue改成image2。

28.errorC2064:

termdoesnotevaluatetoafunction;

指向程序语句:

histimg=cvCreateImage(cvSize(320,200),8,3);

存在函数未被定义或者重复定义!

仔细检查,cvSize是opencv的函数,获得CvSize类型,cvCreateImage也是opencv的函数,搜索cvSize,发现之前有一条语句“CvSizecvSize;

”,把函数cvSize定义成了变量,把它改成cvsize,编译通过。

后记:

定义变量时,一定要避开相关关键字和函数名,切记!

29.OpenCVGUIErrorHandler:

Formatsofinputargumentsdonotmatch()infunctioncvCopy

cvCopy(iplImage,image,0);

中的iplImage之前定义为一通道的(灰度图像),而image为三通道的(彩色图像),格式不匹配。

把IplImage定义为3通道的,然后点击“打开相机”,出现下面错误:

Imagestepiswrong()infunctioncvSetData,

把image改成单通道的(灰度图像)?

变成处理黑白图像?

//20120421把m_pDataBuf换成m_pRgbBuf(彩色图像数据),并且之前的CreateImage通道为3

cvSetData(iplImage,m_pRgbBuf,m_nImageWidth*3);

//末尾参数应该乘以3!

30.Linking...

LINK:

fatalerrorLNK1168:

cannotopenDebug/基于PT转台的视频跟踪软件设计.exeforwriting

.exe程序正在运行,不能重写。

在任务管理器中,把进程.exe关掉!

31.

errorC2664:

cvSetMouseCallback'

cannotconvertparameter2from'

void(int,int,int,int,void*)'

to'

void(__cdecl*)(int,int,int,int,void*)

Noneofthefunctionswiththisnameinscopematchthetargettype

将on_mouse函数定义成静态函数static。

接着出现以下错误:

errorC2597:

illegalreferencetodatamember'

select_object'

inastaticmemberfunction

静态函数要访问类的非静态成员,需做以下处理

MylplClass*temp=(MylplClass*)param;

switch(event){

caseCV_EVENT_MOUSEMOVE:

temp->

a=...;

b=...;

......}

......}

32.

点击调试

?

33.

cvNamedWindow("

帧差后的图像iplImage3"

cvShowImage("

iplImage3);

运行后图像窗口一直在闪烁!

把窗口名字中的iplImage3去掉即可正常显示。

或者改成其它的,不用图像变量iplImage3即可,猜测可能是窗口名字与变量冲突!

cvDestroyWindow的缘故?

34.

cvSaveImage(szSaveName,iplImage4);

出错?

图片保存的文件名应该指明图片格式,在此,应该给szSaveName添加.jpg字符,代码如下:

char*last_name="

.jpg"

;

strcat(szSaveName,last_name);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1