您的位置:首页 > 运维架构

OpenCV学习笔记(1):获取摄像头并显示摄像头视频

2016-06-01 14:57 656 查看
最近为了学习OpenCV,找了《OpenCV入门教程》(PDF版)当做入门教材,后面将开始学习《学习OpenCV》
这本书。
对《OpenCV入门教程》里面的所有例子进行了实践,发现文章最后关于“获取摄像头并显示摄像头视频”
这一部分给出的代码运行不出来,博主搜集了一些资料,找出问题根源,现给出修改后的代码:


//代码的含义主要是通过电脑摄像头获取视屏,并对每一帧图像进行Canny边缘检测,最后显示出来。
#include<stdio.h>
#include<iostream>
#include "opencv2/opencv.hpp"
#include"highgui.h"
using namespace cv;
using namespace std;

int main(int argc, char** argv[])
{
VideoCapture cap(0);
if(!cap.isOpened())
{
cerr<<"Open camera/video failed.\n"<<endl;
return -1;
}
int i=0;
Mat edges;
Mat frame;
namedWindow("edges", 1);
for(;;)
{
cap>>frame;
if(frame.empty()&(i>0))
break;
if(i>0){
cvtColor(frame,edges,CV_BGR2GRAY);
Canny(edges,edges,0,90,3);
imshow("edges",edges);
}
i++;
if(waitKey(30)>=0)
break;
}
return 0;
}


问题分析:《OpenCV入门教程》中的源代码在运行时可能获取不到第一帧图像,从而导致闪退。博主新定义了变量i,使得程序从第二帧图像开始处理,这样就不会出现问题了。下面给出运行效果图。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv 摄像头 视频