OpenCV学习笔记(一):使用opencv读取摄像头并实时显示

 

初学OpenCV,淘宝80左右买了个480P的usb工业摄像头,迫不及待地接上笔记本,

  ——嚯,比显示屏上面自带雪花的摄像头好多了

 

再up2开发板上跑最简单的OpenCV摄像头捕获例程,也是正常显示。然而当再接上笔记本用visual studio跑的时候,自带摄像头正常,而usb摄像头却报错

OpenCV Error: Assertion failed

 

查资料也查不出个所以然来(VS和OpenCV都是刚摸几天- -)。

最初以为是usb摄像头的device编号不匹配,去查获取device编号的方法,网上的结果复杂至极令小白我毫无头绪。

没办法一步一步来吧。然后发现问题似乎出在imshow()这一行。大概是摄像头从打开到正常传输数据速度不够快,最初imshow()都不到数据,就直接报错了。偶然查到Mat::empty()可以判断是否为空,于是把这个判断加在imshow()之前,果然成功运行。

 

另外发现VideoCapture这一行,插入USB摄像头后dev随机分配,电脑重新启动前都是按这个dev编号。在下次开机后可能就和这次编号又不同了,需要注意。

#include "stdafx.h"
#include <opencv2\opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat frame;
    //读取视频或摄像头  
    VideoCapture capture(0);

    
    while (true)
    {
        
        capture >> frame;
        
        if(!frame.empty()){
            imshow("window",frame);
        }


        // imshow("读取视频", frame);

        if(waitKey(30) == 27)   //延时30  
        break;
} return 0; }

 

 

需要加入按键保存当前帧,可以插入以下代码:

if (waitKey(30) == 'p') {
    sprintf(image_name, "..\\img\\%s%d%s", "image", ++num, ".jpg");
    imwrite(image_name, frame);
}

 

转载于:https://www.cnblogs.com/Annabelle/p/8869725.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值