03opencv---读取图像视频
一、读取图像
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) 视频文件中的帧数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】