ubuntu 下opencv2.4.0 打开摄像头

最近在做使用opencv 打开摄像头获取视频的东西,用以下的例子尝试打开摄像头发现失败,我用的是外接的 USB 摄像头,刚开始以为是函数参数的问题,试了好多也没有成功。

下面是例子程序。

#include 
#include 
#include 
#include 
#include 

int main(int argc,char ** argv)
{
    //声明IplImage指针
    IplImage *pFrame = NULL;

    //获取摄像头
    CvCapture *pCapture = cvCreateCameraCapture(-1);

    //创建窗口
    cvNamedWindow("video",1);

    //显示视频
    while(1)
    {
        pFrame = cvQueryFrame(pCapture);

        if(!pFrame)
            break;
        cvShowImage("video",pFrame);

        char c = cvWaitKey(33);

        if(c == 27)
            break;

    }

    //最后释放capture 和window
    cvReleaseCapture(&pCapture);

    cvDestroyWindow("video");

    return 0;
}

几个函数简单介绍一下:

1、cvCreateCameraCapture

初始化从摄像头中获取视频

CvCapture* cvCreateCameraCapture( int index );

index

        要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。

        使用参数-1,发现打不开摄像头,我以为是参数的问题,网上找了一下,说是只接受 -1 和 0两个参数,我也试了,没用。

  2、CvCapture

视频获取结构

typedef struct CvCapture CvCapture;

结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。

然后就是循环读入视频文件

 3、cvQueryFrame函数

从摄像头或者文件中抓取并返回一帧

IplImage* cvQueryFrame( CvCapture* capture );

capture

    视频获取结构。

视频获取结构

        函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。 抓取后,capture被指向下一帧,可用cvSetCaptureProperty调整capture到合适的帧。 

while(1)
    {
        pFrame = cvQueryFrame(pCapture);

        if(!pFrame)           //如果抓取帧为空  ,break 打破循环
            break;
        cvShowImage("video",pFrame);  //否则将抓取的那一帧显示在创建的窗口上

        char c = cvWaitKey(33); //等待33ms,如果触发了按键,将按键的ASCII值给c

        if(c == 27)     //如果c为ESC(ASCII 为27)循环退出
            break;

    }

        如上所说,cvCreateCameraCapture( int index ) 函数的参数试了很多,发现还是不能打开摄像头,后来网上找了一下,发现有些包还需要安装一下,以下是配置摄像头需要的所有包。

sudo apt-get install ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev

sudo apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev

sudo apt-get install libxine1-ffmpeg libxine-dev libxine1-bin

sudo apt-get install libunicap2 libunicap2-dev

sudo apt-get install libdc1394-22-dev libdc1394-22 libdc1394-utils

sudo apt-get install swig

sudo apt-get install libv4l-0 libv4l-dev

sudo apt-get install python-numpy

sudo apt-get install libpython2.6 python-dev python2.6-dev 

        以上包全部安装之后,需要重新编译OpenCV,依次 cmake CMakeLists.txt,make,sudo make install 。

然后重新编译例子程序,摄像头就能打开了。


        参考资料:http://www.cnblogs.com/Anykong/archive/2011/04/09/Anykong_OpenCV2.html

                          http://suzzz.blog.163.com/blog/static/1903433242012228100448/

你可能感兴趣的:(OpenCV)