OpenCV 2 遇到问题汇总

来源:互联网 发布:淘宝食品代理公司注 编辑:程序博客网 时间:2024/04/30 04:30
  • 忘记添加类库:
  • Matcher_Simple.obj: error LNK2019: 无法解析的外部符号"public:__thiscall cv::SURF::SURF(void)" (??0SURF@cv@@QAE@XZ),该符号在函数_wmain 中被引用
  • Matcher_Simple.obj: error LNK2019: 无法解析的外部符号"public:__thiscall cv::SURF::SURF(double,int,int,bool,bool)"(??0SURF@cv@@QAE@NHH_N0@Z),该符号在函数_wmain 中被引用
  • E:\OpencvTest\Matcher_Simple\Debug\Matcher_Simple.exe: fatal error LNK1120: 2 个无法解析的外部命令

解决方法:用VS2010的话就在通用属性->连接器->输入->附加依赖项里边添加上库文件opencv_nonfree243d.lib这里最后的243具体可能根据你的版本变化,为你当前opencv版本,d字母表示debug,也可去掉。


重复定义CImage:

cvvImage"C2872"不明确:

1>testaaDlg.cpp(202): error C2872: “CImage”: 不明确的符号
1>          可能是“D:\OpenCV2.1\VS2010\include\opencv\highgui.h(535) : CvvImage CImage”
1>          或       “e:\visual studio2010\vc\atlmfc\include\atlimage.h(68) : ATL::CImage”

很明显两个类里面都定义了CImage



关于MFC MVC编程:

CColorDialoghttp://blog.sina.com.cn/s/blog_6163bdeb0102dya5.html    http://blog.csdn.net/yy13210520/article/details/6794541

CMFCColorButton:http://blog.csdn.net/zz457887107/article/details/6741783

MFC Slider Controll:http://blog.csdn.net/xhhjin/article/details/6273928

unsigned char与byte是同一种数据类型

使用类模板添加控制变量才可以自动加入数据交换语句

在对话框类外面使用GetDlgItem引出的MFC CWnd和HWND:http://www.th7.cn/Program/cp/201209/90720.shtml ;http://blog.csdn.net/nighttraveldeity/article/details/6530152



关于变量转换:

(int *)A与int *A  前者是把A强制转换为int型指针,后者是定义一个int型指针变量


关于灰度直方图:
intensity指的是bin的值???
bin的解释:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html


size_t是unsigned int或者unsigned long这样的无符号整数类型

int MyString::GetStrLen(const char *str)//这里的const指的是str指向一个字符常量的指针,字符本身不可以修改,但是指针str可以移动


关于指针非法访问内存:

_BLOCK_TYPE_IS_VALID  http://programerni.diandian.com/post/2012-11-19/40042026665


关于cv::Mat.type()的返回值大小计算方法

edit: see "types_c.h" for example:

#define CV_8UC3 CV_MAKETYPE(CV_8U,3)#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))eg.depth = CV_8U = 0cn = 3CV_CN_SHIFT = 3CV_MAT_DEPTH(0) = 0(((cn)-1) << CV_CN_SHIFT) = (3-1) << 3 = 2<<3 = 16

so CV_8UC3 = 16 But you aren't supposed to use this number, just check type() == CV_8UC3 if you need to know what type an internal opencv array is.
Remember opencv will convert the jpeg into BGR (or grey scale if you pass '0' to imread) - so it doesn't tell you anything about the original file                        OpenCV矩阵元素类型:http://blog.csdn.net/kfqcome/article/details/8314175


源码路径:
IputArray:D:\OpenCV\modules\core\src\matrix.cpp
compareHist:D:\OpenCV\modules\imgproc\src\histogram.cpp
cvWatershed、watershed:D:\OpenCV\modules\imgproc\src\segmentation.cpp

关于Mat:
mat2.size[1]是第一行的列数

C#调用C++Dll封装时遇到的一系列问题
http://www.cnblogs.com/wdysunflower/archive/2010/09/01/1813947.html

使用OpenCV P/Invoke处理图像
http://www.cnblogs.com/xrwang/archive/2010/01/26/TheComparisonOfImageProcessingLibraries.html
http://www.cnblogs.com/xrwang/archive/2010/03/03/ImageFeatureDetection.html
http://hi.baidu.com/terroqq/item/67c074128d44d10ee75c3670
http://developer.51cto.com/art/200908/145191.htm

meanStdDev

Calculates a mean and standard deviation of array elements.

C++: void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask=noArray());

OutputArray mean 和 OutputArray stddev的类型都是64F的形式,因此,应该与double对应。


1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

http://blog.sina.com.cn/s/blog_51c1ed050100zhrc.html


原创粉丝点击