本篇博客为个人学习OpenCV的笔记(仅包含一些必要的内容,没有安装教程,一般也不贴全部的代码)。很可能存在错误,欢迎指正。内容是关于4小时上手C++版本OpenCV的视频的笔记,b站已有up进行搬运,b站的视频链接为: 视频.
头文件
<opencv2/imgcodecs.hpp>
<opencv2/highgui.hpp>
<opencv2/imgproc.hpp> //图像处理的头文件
只需要以上三个头文件即可;当然在本节笔记中,其实没有全部用上
读取图像
注意:后续的代码默认使用了using namespace cv;
Mat img = imread(path);//path:string
imshow("Image", img);
waitKey(0);//延迟,0表示无限大
这里需要说明的是path是std::string类型,如果没有waitKey(),图像在显示后会立即关闭。waitKey()里的数值表示延迟多少ms,0表示无限大
读取视频
//使用while循环获取视频的每一帧图像
VideoCapture cap(path);
Mat img;
whie(true)
{
cap.read(img);
imshow("Image", img);
waitKey(1);//延迟1ms;速度很快,可以加大数值来做延迟
//结束时会报错,因为没有退出,读完就没有图片可以读取了
}
视频图像帧主要是通过VideoCapture来捕捉。
摄像头
//使用while循环获取视频的每一帧图像
VideoCapture cap(0);//相机id
Mat img;
whie(true)
{
cap.read(img);
imshow("Image", img);
waitKey(1);//延迟1ms;这里设置1比较合理,再大就会有明显的延迟感
}
摄像头和导入视频十分相似,仅仅是在VedioCapture参数的差别,摄像头传入的是你相机的id,视频则是传入视频的地址。当然,当你的电脑存在多个摄像头的时候,获取对应的id可能会有一些复杂,这个日后有时间在进行补充了。