EasyCap视频音频采集卡在VS2010环境下视频采集
因实验需求,购买了EasyCap视频音频采集卡来实现视频的传输,为了实现在VS2010环境下对视频的处理,需要进行一定的配置,以便对视频进一步进行配置。
本文分三部分来进行介绍:
一、直接采用Opencv中 obj >> frame 函数无法采集EasyCap传入的图像,运行时将出现蓝屏现象(该方法无法打开EasyCap);
二、采用Shiqi Yu编写的Directshow程序可以打开USB2.0 Camera摄像头,但无法打开EasyCap传入的图像(该方法无法打开EasyCap);
三、Microsoft的SDK/Samples/multimedia/directshow/capture/amcap程序可以实现EasyCap传入图像的显示(该方法可以打开EasyCap);
主要介绍OpenCv的配置、Shiqi Yu编写的Directshow的配置和Amcap程序中的配置。
一、OpenCv配置:
实验第一阶段,本以为可采用Opencv函数直接实现对EasyCap采集棒的视频传输,故在VS2010中对OpenCv进行配置。
下载OpenCv 2.3.1 superpack版:(该版本使用的人较多),http://opencv.org/downloads.html 解压OpenCv 2.3.1到D盘(其它地址也可以)
配置过程:
1、环境变量PATH
   右键“计算机” --- > “属性”--- > “高级系统设置”--- > “环境变量”--- > “用户变量”--- > “新建”,在弹出的“新建环境变量”窗口中输入变量名“PATH",变量值”D:\opencv\build“
2、配置工程属性
   在VS2010中新建VC++工程
   在”Solution Explorer“中,右键工程名称--- > “属性”--- > “Configuration Properties”--- > “VC++ Directories”
   -------------在”Include Directories“中输入”D:\opencv\build\include"  ;  "D:\opencv\build\include\opencv" ;  "D:\opencv\build\include\opencv2"    
-------------在“Library Directories”中输入“D:\opencv\build\x86\vc10\lib"
   在”Solution Explorer“中,右键工程名称--- > “属性”--- > “Configuration Properties”--- > “Linker"--- > “Input"
     -------------在”Additional Dependencies“中输入以下依赖库文件,分为Active Debug和Release两个配置(在窗口的左上角显示当前所配置的编译环境)
    -------------Active Debug状态下:


                                 opencv_calib3d231d.lib
                                 opencv_contrib231d.lib
                                 opencv_core231d.lib
                                 opencv_features2d231d.lib
                                 opencv_flann231d.lib
                                 opencv_gpu231d.lib
                                 opencv_highgui231d.lib
                                 opencv_imgproc231d.lib
                                 opencv_legacy231d.lib
                                 opencv_ml231d.lib
                                 opencv_objdetect231d.lib
                                 opencv_ts231d.lib
                                 opencv_video231d.lib 


    -------------Release状态下:


                                 opencv_calib3d231d.lib
                                 opencv_contrib231d.lib
                                 opencv_core231d.lib
                                 opencv_features2d231d.lib
                                 opencv_flann231d.lib
                                 opencv_gpu231d.lib
                                 opencv_highgui231d.lib
                                 opencv_imgproc231d.lib
                                 opencv_legacy231d.lib
                                 opencv_ml231d.lib
                                 opencv_objdetect231d.lib
                                 opencv_ts231d.lib
                                 opencv_video231d.lib 


至此Opencv2.3.1 superpack版在VS2010环境下的配置过程完成(配置过程中,无论是环境变量的配置还是VC++路径的配置,用到的都是opencv\build中的路径,可键入如下代码进行测试(代码为采用Opencv打开摄像头代码,只要编译通过即可,不必运行):
<span style="font-size:18px;"><h5>#include "stdafx.h"
#include <opencv.hpp>
using namespace cv;
int main( int argc, char ** argv)
{
VideoCapture obj(0);
if( !obj.isOpened() )
{
return 0;
}
while(1)
{
Mat im,frame;
obj >> frame;
frame.copeTo(im);
}
}</h5>
</span>



二、Shiqi Yu的Directshow环境配置
对于EasyCap采集棒,由于采用Opencv函数无法直接打开摄像头,而且会出现蓝屏现象,经上网查询得知该Easycap需要采用Directshow方式打开.
1、下载Shiqi Yu所编写的CameraDS函数,将其中的directshow文件夹放入自己所建立的VC++工程文件中
2、将Shiqi Yu所编写的CameraDS函数中的CameraDS.cpp和CameraDS.h添加到自己的工程当中(注意:一定要在VS2010环境中添加到工程中,而不是简单的将两个文件复制到自己的工程文件)。
3、编译运行即可(注意:VS2010的有些版本在编译时会出现:Error 'Link' fatal error LNK1123 failure during conversion to COEF file invalid or corrupt, 此时需要下载 vs2010 sp1 补丁包(http://www.microsoft.com/zh-cn/download/details.aspx?id=23691)即可正常编译)
至此Shiqi Yu的Directshow环境配置完成,运行该程序可以实现对Easycap设备名称的读取,但无法实现视频的传输,在opencamera阶段会报错。
三、Amcap程序的环境配置