从摄像头中读取
#include <iostream>
#include <opencv2/opencv.hpp>
//argc: argument count 程序传送给main函数的命令行参数的总个数. 当传给main只有一个参数时,即argc=1,表示只有一个程序名称,这个名称存储在argv[0]中
//argv: argument vector 字符串数组,该数组用来存放指向字符串的指针,下标从0开始
//argv[0]: 指向程序运行的路径名称
//argv[1]: 路径后的第一个字符串
//argv[2]: 路径后的第二个字符串
//argv[argc]=NULL
int main(int argc, char* argv[]) {
//创建窗口
cv::namedWindow("Example",cv::WINDOW_AUTOSIZE);
//实例化视频读取结构
cv::VideoCapture cap;
//如果命令行参数个数为1
if (argc==1)
//视频读取结构打开摄像头
cap.open(0); //index=0
//如果命令行参数个数不止1个
else
//视频读取结构打开视频文件
cap.open(argv[1]);
//判断视频结构打开失败
if (!cap.isOpened()) {
//输出错误信息,返回-1
std::cerr << "Couldn't open capture." << std::endl;
return -1;
}
//实例化保存视频帧结构frame
cv::Mat frame;
//循环读取视频帧
for(;;) {
//视频读取结构读取一帧
cap >> frame;
//判断帧空,退出循环
if (frame.empty())
break;
//显示帧
cv::imshow("Example",frame);
//显示帧后等待33ms,如此段时间内无键盘事件,则退出循环
if (cv::waitKey(33)>=0)
break;
}
return 0;
}