OpenCV学习记录之摄像头调用

本文介绍了一个OpenCV调用摄像头时常见的延时问题及其解决方案。通过修改源程序中的if条件句并增加else语句,可以有效避免因摄像头打开延迟导致的程序错误。此外,还详细展示了如何使用C++实现这一过程。

关于opencv调用摄像头的问题主要是因为摄像头的打开有延时。在显示图像前,要用if语句判断图像是否存在。(否则会报错)

具体的:教程里的源程序,将if条件句里,break去掉,并增加else语句。

 

 

[cpp]  view plain  copy
 
  1. #include<opencv2/opencv.hpp>   
  2. #include<cv.h>  
  3.    
  4. using namespace cv;   
  5. using namespace std;  
  6. //-----------------------------------【main()函数】--------------------------------------------  
  7. //                描述:控制台应用程序的入口函数,我们的程序从这里开始  
  8. //-------------------------------------------------------------------------------------------------  
  9. //stringname = "我的摄像头";  
  10. int main( )   
  11. {   
  12. //【1】从摄像头读入视频  
  13. VideoCapture capture(0);//若测试摄像头有没有打开,/*if(!capture.isOpened())                {cout<< "cannot open the camera.";cin.get();return -1;}*  
  14.    
  15. Mat edges; //定义一个Mat变量,用于存储每一帧的图像  
  16. //【2】循环显示每一帧  
  17. while(1)  
  18. {  
  19. Mat frame; //定义一个Mat变量,用于存储每一帧的图像  
  20. capture >> frame;  //读取当前帧                          
  21. if(frame.empty())  
  22. {  
  23. printf("--(!) No captured frame -- Break!");  
  24. //break;                  
  25. }  
  26. else  
  27. {  
  28. cvtColor(frame, edges, CV_BGR2GRAY);//彩色转换成灰度  
  29. blur(edges, edges, Size(7, 7));//模糊化  
  30. Canny(edges, edges, 0, 30, 3);//边缘化  
  31. imshow("读取被边缘后的视频", frame); //显示当前帧  
  32.    
  33. }  
  34.    
  35. waitKey(30); //延时30ms  
  36. }  
  37. return0;      
  38. }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值