一、读取图像
Mat img = imread("1.jpg"); // 读取图像并返回一个Mat变量 namedWindow("img_title", WINDOW_AUTOSIZE); // 新建一个标题为img_title的窗口,根据内容自适应大小 imshow("img_title", img); // 将img显示在标题为img_title的窗口中,也可以直接显示图片,不用建窗口 waitKey(0); // 等待任意按键关闭图像
二、读取视频
// 打开方式1,直接通过构造函数 VideoCapture capture("1.mp4");
// 打开方式2 VideoCapture capture; // 先创建一个捕获对象,然后通过成员函数open()来设定打开的信息 capture.open("1.mp4");
如果打开成功,cv::VideoCapture的成员函数isOpened()将会返回true,可以进行判断
if (!capture.isOpened()) { //如果打开成功,我们将可以开始读取视频的帧,并且cv::VideoCapture的成员函数isOpened()将会返回true printf("could not read this video file...\n"); return -1; }
//显示视频 Mat frame; namedWindow("camera-demo", WINDOW_AUTOSIZE); //新建一个标题为camera-demo的窗口,根据内容自适应大小 while (capture.read(frame)) { imshow("camera-demo", frame); // 显示图像 //writer.write(frame); //使用writer写入图像 char c = waitKey(50); if (c == 27) { break; } }
三、读取视频帧到Mat矩阵中
// 读取到Mat矩阵中 Mat frame; capture.read(frame); //或者 capture>>frame; namedWindow("img-demo", WINDOW_AUTOSIZE); //// 新建一个标题为camera-demo的窗口,根据内容自适应大小 imshow("img-demo", frame); //显示
四、写入视频
VideoWriter video_writer; video_writer.open(const string& filename, int fourcc, double fps,Size frameSize, bool isColor=true); // fourcc:表示压缩帧的codec,一般用CV_FOURCC(‘M’,‘J’,‘P’,‘G’) = motion-jpeg codec; 例: Size S = Size((int)capture.get(CAP_PROP_FRAME_WIDTH),(int)capture.get(CAP_PROP_FRAME_HEIGHT));//宽高 int fps = capture.get(CAP_PROP_FPS);//帧率 VideoWriter writer("C:/Users/Dell/Desktop/picture/test.mp4", CAP_OPENCV_MJPEG, fps, S, true);
writer.write(frame); //后面使用write写入图像
五、OpenCV VideoCapture.get()参数详解
cv2.VideoCapture.get(3) 在视频流的帧的宽度
cv2.VideoCapture.get(4) 在视频流的帧的高度
cv2.VideoCapture.get(5) 帧速率
cv2.VideoCapture.get(6) 编解码的4字-字符代码
cv2.VideoCapture.get(7) 视频文件中的帧数
标签:capture,读取,img,get,frame,---,VideoCapture,03opencv From: https://www.cnblogs.com/cc-world/p/16306183.html