OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 34047|回复: 24

opencv读取摄像头的输入

[复制链接]
发表于 2014-4-20 00:11:35 | 显示全部楼层 |阅读模式
现在我有两种读取摄像头输入的方法:
1。使用opencv中的函数。
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <iostream>
using namespace std;
using namespace cv;

int main()
{
    char c;
    CvCapture* capture = cvCreateCameraCapture(0);   //0为外部摄像头的ID,1为笔记本内置摄像头的ID
    IplImage* src;
    for (;;)
   {
       src = cvQueryFrame(capture);            
       cvShowImage("Input", src);
       c = waitKey(10);
       if (c == 27) break;
   }
  return 0;
}
2.用opencv2中的函数。
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
    char c;
    VideoCapture inputVideo(0);    //0为外部摄像头的ID,1为笔记本内置摄像头的ID
    Mat src;
    for(;;)
    {
        inputVideo >> src;
        imshow("input",src);
       c = waitKey(10);
       if (c == 27) break;
    }
  return 0;
}
采用第一种方式既可以读取外部摄像头的内容,也可以读取内置摄像头的内容。采用第二种方式只能读取内置摄像头的内容。且用第二种方式读取外部摄像头时,src为空。我用的opencv的版本是248,vs的版本是vs2013。有没有人知道这是为什么?
回复

使用道具 举报

 楼主| 发表于 2014-4-20 16:29:12 | 显示全部楼层
本帖最后由 wtswkz 于 2014-4-20 18:23 编辑

这个问题被我解决了。我今天早上实然想到用第二种方式读取外部摄像头的数据时可能只有第一帧是空的,而其他帧是好的,所以我在代码中加了一个简单的判断:
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
     char c;
     int i = 0;
     VideoCapture inputVideo(0);    //0为外部摄像头的ID,1为笔记本内置摄像头的ID
     Mat src;
     for(;;)
     {
         inputVideo >> src;
         if(src.empty() & i > 0) return 1;
         if(i > 0)  imshow("input",src);

        i ++;
        c = waitKey(10);
        if (c == 27) break;
     }
   return 0;
}
然后就可以显示外部摄像头的数据了
回复 支持 反对

使用道具 举报

发表于 2015-2-4 22:32:53 | 显示全部楼层
求问楼主,为什么我用第一种办法还是没法读取外接摄像头图像,就是一片灰色的,是摄像头问题吗,我是2013+2.4.10
回复 支持 反对

使用道具 举报

发表于 2015-2-4 22:50:12 | 显示全部楼层
sunny66 发表于 2015-2-4 22:32
求问楼主,为什么我用第一种办法还是没法读取外接摄像头图像,就是一片灰色的,是摄像头问题吗,我是2013+2 ...

已解决
回复 支持 反对

使用道具 举报

发表于 2015-3-16 19:14:01 | 显示全部楼层
先看看,正好在学这方面的东西。。。
回复 支持 反对

使用道具 举报

发表于 2015-3-17 09:06:55 | 显示全部楼层
sunny66 发表于 2015-2-4 22:32
求问楼主,为什么我用第一种办法还是没法读取外接摄像头图像,就是一片灰色的,是摄像头问题吗,我是2013+2 ...

同问,我用第一种方法并没有读取到摄像头图像,只是摄像头的灯亮了,但是窗口还是显示的一片黑
回复 支持 反对

使用道具 举报

发表于 2015-3-17 14:29:44 | 显示全部楼层
新手一个,想请问一下外部摄像头和内置摄像头的ID是怎么回事?我没有外部摄像头,运行程序时只能用0,VideoCapture inputVideo(0); 括号里换成1就会出错。求解答...
回复 支持 反对

使用道具 举报

发表于 2016-1-8 17:30:04 | 显示全部楼层

怎么解决的?
回复 支持 反对

使用道具 举报

发表于 2016-1-8 17:31:18 | 显示全部楼层
如果外部有多个摄像头呢?VideoCapture capture(0);

        //【2】循环显示每一帧
        while(1)  
        {  
                Mat frame;  //定义一个Mat变量,用于存储每一帧的图像
                capture>>frame;  //读取当前帧
                imshow("读取视频",frame);  //显示当前帧
                waitKey(30);  //延时30ms
        }  
        return 0;     
根据我的测试0 是笔记本自带的  1采集不到任何东西  2就出错
回复 支持 反对

使用道具 举报

发表于 2016-1-9 09:42:18 | 显示全部楼层
有很多人都还用老版的语言吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-18 14:14 , Processed in 0.009938 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表