OpenCV学习记录之摄像头调用

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

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

 

#include<opencv2/opencv.hpp> 
#include<cv.h>
 
using namespace cv; 
using namespace std;
//-----------------------------------【main()函数】--------------------------------------------
//                描述:控制台应用程序的入口函数,我们的程序从这里开始
//-------------------------------------------------------------------------------------------------
//stringname = "我的摄像头";
int main( ) 
{ 
//【1】从摄像头读入视频
VideoCapture capture(0);//若测试摄像头有没有打开,/*if(!capture.isOpened())                {cout<< "cannot open the camera.";cin.get();return -1;}*
 
Mat edges; //定义一个Mat变量,用于存储每一帧的图像
//【2】循环显示每一帧
while(1)
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture >> frame;  //读取当前帧                        
if(frame.empty())
{
printf("--(!) No captured frame -- Break!");
//break;                
}
else
{
cvtColor(frame, edges, CV_BGR2GRAY);//彩色转换成灰度
blur(edges, edges, Size(7, 7));//模糊化
Canny(edges, edges, 0, 30, 3);//边缘化
imshow("读取被边缘后的视频", frame); //显示当前帧
 
}
 
waitKey(30); //延时30ms
}
return0;    
} 


 


版权声明:本文为coldplayplay原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。