OpenCV学习笔记(一):使用opencv读取摄像头并实时显示
程序员文章站
2022-04-27 23:28:16
初学OpenCV,淘宝80左右买了个480P的usb工业摄像头,迫不及待地接上笔记本, ——嚯,比显示屏上面自带雪花的摄像头好多了 再up2开发板上跑最简单的OpenCV摄像头捕获例程,也是正常显示。然而当再接上笔记本用visual studio跑的时候,自带摄像头正常,而usb摄像头却报错 Ope ......
初学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 0 对应笔记本摄像头。插入usb摄像头时,dev 0 对应usb摄像头,dev 1 对应笔记本摄像头。
#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; }
下一篇: 基于python生成器封装的协程类