知识点:mat类型赋值运算,只是引用,需要使用src.clone()才能进行复制。
显示图像
读取文件:cv::imread()
复制图像:Mat::clone()
创建窗口:cv::nameWindow()
显示图像:cv::imhsow()
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src,_src;
const char src_dir[] = "E:\\Project\\C\\myProject\\data\\000001.jpg";
vector<string> files;
src = imread(src_dir); //读取图片
if (!src.data)
{
cout << "no img input...\n" << endl;
return -1;
}
_src = src.clone(); //复制图片
namedWindow("1", WINDOW_KEEPRATIO); //新建窗口
imshow("1", _src); //显示图片
waitKey(0);
return 0;
}
显示视频
VideoCapture类:视频捕捉类,该语句实例化了一个对象inVid。这个类可以打开和关闭视频文件。这个对象可以打开和关闭ffmpeg支持的所有类型的视频文件。可以通过inVid.open()打开视频。
cv::WaitKey()函数:不断刷新图像,频率时间为delay,单位为ms。
返回值为当前键盘按键值。
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat in_frame, out_frame;
const char win1[] = "Grabbing...";
const char win2[] = "Recoding...";
double fps = 30;
VideoCapture inVid(0); //打开电脑自带的相机
if (!inVid.isOpened())
{
cout << "Error! Camera not ready...\n";
return -1;
}
namedWindow(win1);
namedWindow(win2);
while (1)
{
inVid >> in_frame; //将inVid内容传入in_frame
imshow("Video", in_frame);
if (waitKey(1000 /fps) >= 0 ) //设置显示的频率
break;
}
inVid.release(); //释放视频文件或视频设备
return 0;
}