最近试了一下用opencv进行图像处理,遇到了很多问题这里记录下来
首先是安装
VS用的VS2013,开始用的是2015+3.1,后来感觉网上的资料较少就改成了2013+2.4.11
流程:
1、 安装VS2013
2、 安装opencv2.4.11
3、 配置环境变量
4、 创建控制台应用程序,写代码
5、 加各种lib文件
具体过程http://jingyan.baidu.com/article/ff411625b1311a12e4823784.html
其中遇到的各种问题以及解决
1、 会出现link的几种错误,这个的主要问题是lib库没加明白,由于2.4.11要加的库很多,所以很容易出错,还有可能就是那个线程调试的问题在属性里边的多线程调试也是需要改的。
改过之后还是有问题我发现了一个更好的解决办法,就是加上libpngd.lib
libtiffd.lib
zlibd.lib
IlmImfd.lib
libjasperd.lib
libjpegd.lib
comctl32.lib
gdi32.lib
vfw32.lib
这些链接库,然后就不会报错了
2、 改完之后,运行会报缺少dll的错误,这个直接下载对应的文件,放到system32中即可
3、 在测试人脸识别的程序(http://docs.opencv.org/2.4/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html)的时候objectdetection文件里边的时候不能打开摄像头,这个地方用capture的代码把-1改成0就可以了
4、 然后在运行这个的时候会出现中止,——pdirst=pHead出错,这个地方可能是库没加明白,我改成release的库,用release运行就没问题了
5、 接下来是运行从https://github.com/andheroe/blink-detection上的眨眼程序,时,没有反应,经过调试发现是xml文件没有加载上,可能是路径的问题,把xml文件放到文件下,直接用相对路径后就没问题了。
6、 还有就是我用的台式机,没有摄像头而这里边的两个程序,就直接找了一个视频文件,进行测试,打开视频文件的代码可直接使用
对于第一个程序人脸识别的可以直接使用
VideoCapture cap("文件路径");
对于眨眼的程序
CvCapture *capture = cvCreateFileCapture("F:/zy.mp4");
Mat frame, frameCopy, image;
//这里有一句要注释掉,不然会出问题
// capture = cvCaptureFromCAM(CV_CAP_ANY); //0=default, -1=any camera, 1..99=your camera
if (!capture) {
cout << "No camera detected" << endl;
}
这样修改就可以了,测试结果如下
共同学习,写下你的评论
评论加载中...
作者其他优质文章