opencv项目中常见问题总结

来源:互联网 发布:数据接口类型有哪些 编辑:程序博客网 时间:2024/06/05 07:26

0.配置问题。

解决方案:略。

1.typedef void * POINTER_64 PVOID64;       error:缺分号等

解决方法1:#define POINTER_64 __ptr64

2.缺少tbb_debug.dll或者tbb.dll
解决方法: 复制tbb_debug.dll 到Debug下,可以将_debug去掉变成 tbb.dll放到release下。

3.error LNK2019: 无法解析的外部符号

解决方法: 通过在网上查资料,是缺少库文件,或者库文件加载错误.

4.error LNK2001: 无法解析的外部符
解决方法: 出现这个2001错误,是因为链接失败,然而链接失败,又是因为以下原因: 
1>你在头文件中声明了函数,但是cpp文件缺少了函数实现部分。 
2>忘了将这个.h,.cpp   Add   to   project; 
3>以上两种情况都没有做,没有将它对应的lib文件添加到Setting-> LINK中   

5.0x672f554d 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
解决方法:空指针,检查指针操作,特别是delete之后还有没有使用,或是根本就没有new,
或者调用函数失败了。
6.头文件互相包含问题
#ifndef _TRICIRCLE_H_
#define _TRICIRCLE_H_
。。。
#endif
7.BGR-HSV
cvCvtColor(workImg,HSVImg,CV_BGR2HSV);
不能写成
cvCvtColor(workImg,HSVImg,CV_RGB2HSV);
否则会转不回来!

8.error:index is out of range.
解决方案; 图像遍历过程中越界,也就是 i 或j 大于图像的高度或者宽度。
9.
无法启动此程序,因为计算机中丢失MFC42D.DLL
解决方案:  “工程-设置-常规-microsoft基础类,(选择使用MFC作为静态链接库)”
10.fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory

VS2010编译 DirectShow一些项目时遇到 错误:fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory

解决方法:

从网上下载一个 qedit.h 的头文件,或者从 vs08 安装的目录下弄一个也行。

然后拷贝下载的 qedit.h 文件到目录 C:\Program Files\Microsoft SDKs\Windows\v7.1\Include 下;

然后在之前编译出错的项目的 "stdafx.h" 的文件中头部加上:

#pragma include_alias( "dxtrans.h", "qedit.h" )#define __IDxtCompositor_INTERFACE_DEFINED__#define __IDxtAlphaSetter_INTERFACE_DEFINED__#define __IDxtJpeg_INTERFACE_DEFINED__#define __IDxtKey_INTERFACE_DEFINED__#include "Qedit.h"

就ok了~~~

备注:vs2010需要项目属性需要配置 DirectShow 开发环境,具体配置参考网络。。。


11.  
HEAP[ImgRecog.exe]: Invalid address specified to RtlFreeHeap( 02960000, 01056B78 )
一个可能的原因:在不同模块(工程)之间传递 C++ 类,而这两个模块用了不同的运行时库(Runtime Library)设置。例如:EXE 模块调用 DLL 模块里传递 C++ 类的函数,但 DLL 模块使用静态链接(Release 是 Multi-threaded (/MT)、Debug 是 Multi-threaded Debug (/MTd))方式编译,而 EXE 模块使用动态链接(Release 是 Multi-threaded DLL (/MD)、Debug 是 Multi-threaded Debug DLL (/MDd))方式编译。内存越界和 释放静态内存变量也会产生这种问题.
解决方案: 
       1.改在静态库中使用MFC为在共享DLL中使用MFC  
       2. 查看越界的内存,或者释放指针是否正确。
12.
 转换到 COFF 期间失败: 文件无效或损坏
删除...\Microsoft Visual Studio 2010\VC\bin下面的那个cvtres.exe就好了。
13.未在此计算机上注册activex控件,请注册控件并重试
在64位Windows下:64位exe和dll在目录c:\windows\system32目录下;32位exe和dll在目录c:\windows\syswow64目录下;所以要注意:    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
14. 无法找到“XXX.exe”的调试信息,或者调试信息不匹配
-----解决方案----- 
首先打开菜单 项目->项目属性页 
选择 配置属性->链接器->调试->生成调试信息 改为 是 
选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI) 
选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od)
15. inline 函数处出现问题.
解决方案:
将 inline 改为 _inline . 

16. 函数内部已经定义的局部变量编译时出错。
解决方案:
事实上,变量已经定义并且初始化,但是由于编译环境的影响,需要将变量定义放在函数前端。


0 0
原创粉丝点击