【OpenCV学习笔记】2.3 OpenCV2.2摄像头读取视频的问题和解决(VS2010)

摄像头读取视频这一块研究了很长时间,终于弄好了。刚开始以为是代码的问题,因为一直编译不过,后来
修改了一个小错误,编译通过,但是弹出来的窗口是灰色的没有图像。我“有问题找度娘”了一段时间,发现有不少同 僚也遇到了相似的问题,但是解决办法对于我这里都不甚有效。后来我排除了代码,配置和摄像头出问题的可能性。我的方法就是,一个一个试验。可能比较繁琐, 不太容易发现真正的问题所在,但是还挺有效果的。下面是正文:
 
代码:
  1. #include "stdafx.h"
  2. #include <core.hpp>
  3. #include <highgui.hpp>
  4. #include<stdio.h>
  5. int main( int argc, char** argv )
  6. {
  7.   //声明IplImage指针
  8.   IplImage* pFrame = NULL;
  9.  //获取摄像头
  10.   CvCapture* pCapture = cvCreateCameraCapture(0);
  11.   //创建窗口
  12.   cvNamedWindow("Video", 1);
  13.   //显示视屏
  14.   while(1)
  15.   {
  16.       pFrame=cvQueryFrame( pCapture );
  17.       if(!pFrame)break;
  18.       cvShowImage("Video",pFrame);
  19.       char c=cvWaitKey(33);
  20.       if(c==27)break;
  21.   }
  22.   cvReleaseCapture(&pCapture);
  23.   cvDestroyWindow("Video");
  24.   return 0;
  25. }
 
我的环境:WIN7 32 bits+VS2010旗舰版+OpenCV2.2
目标:利用USB摄像头读入视频数据,在电脑上显示。
遇到的问题:经过排查代码错误后,编译通过。但是弹出灰色无图像窗口如下。
 
【OpenCV学习笔记】2.3 OpenCV2.2摄像头读取视频的问题和解决(VS2010)_第1张图片
 
首先,参考了 http://www.cnblogs.com/5uperDing/archive/2011/05/30/2063663.html 里面的一个方法,修正了OpenCV2.2的一个小bug
需要修改的文件位置: $(OpenCV Folder)\modules\highgui\src\precomp.hpp
具体的修改代码参考上述文章~注意,需要修改此hpp文件的属性,将只读选项勾选掉。修改之后保存,用CMAKE编译一下。
 
这里需要说明的是,由于当初安装配置OpenCV的时候,使用的是 OpenCV 2.2 for VS2010,所以未使用CMAKE编译。此时编译,并不需要卸载OpenCV。安装并代开cmake2.8,在源文件夹那里填写的是已经安装的 OpenCV的地址(比如我已经安装在C盘,那就填C:\OpenCV2.2),然后在C:\OpenCV2.2里面新建一个文件夹叫 VS2010,cmake的目标地址就写C:\OpenCV2.2\VS2010。不知道我表达清楚了没有~
 
另外很重要的一点,就是需要在项目文件夹的debug文件夹中粘贴上所需要的动态链接库
$project folder\$project name\Debug 里面 粘贴上:
 
最后,一定要重新检查项目文件属性的设置,即debug和release下的包含目录,库目录,和附加依赖项。要填写完整地址,换行,无分号,见下图。如C:\OpenCV2.2\VS2010\lib\opencv_core220.lib
注意,debug和release下的附加依赖项是不同的。debug的比release的多了个d。

【OpenCV学习笔记】2.3 OpenCV2.2摄像头读取视频的问题和解决(VS2010)_第2张图片 【OpenCV学习笔记】2.3 OpenCV2.2摄像头读取视频的问题和解决(VS2010)_第3张图片
 
好了,运行,效果出来了~
【OpenCV学习笔记】2.3 OpenCV2.2摄像头读取视频的问题和解决(VS2010)_第4张图片
 
 
ref:http://blog.chinaunix.net/uid-26673820-id-3077749.html

你可能感兴趣的:(opencv)