在OpenCV中可以十分方便地使用摄像头,用C++的接口写的一个最简单的demo如下所示:
#include "opencv2/opencv.hpp"
#include <iostream>
#include <windows.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
Sleep(2000);
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
return 0;
}
这个是OpenCV官方tutorial里面的一个demo,但是笔者对其略做了改动,加了一句Sleep(2000),即等待2000毫秒,即摄像头启动需要一定的时间,否则无法正常读取图像。