首页 > 其他分享 >03opencv---读取图像视频

03opencv---读取图像视频

时间:2022-08-25 17:22:30浏览次数:89  
标签:capture 读取 img get frame --- VideoCapture 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) 视频文件中的帧数

 

标签:capture,读取,img,get,frame,---,VideoCapture,03opencv
From: https://www.cnblogs.com/cc-world/p/16306183.html

相关文章

  • 面经-虚拟机-JVM内存参数
    JVM堆内存参数:对于JVM内存配置参数:-Xmx10240m-Xms10240m-Xmn5120m-XX:SurvivorRatio=3其最小内存值和Survivor区总大小分别是?-Xmx10240mXmx:Java虚拟机最大内存10Gm......
  • vue表格之:summary-method="getSummaries"与show-summary(列求和)
    //表格列求和<el-table:summary-method="getSummaries"show-summary></el-table>getSummaries(param){const{columns,data}=paramconstsums=[]......
  • 微模块-前端业务模块化探索,拆解巨石应用的又一利器
    大家好,我是Eluxjs的作者,Eluxjs是一套基于“微模块”和“模型驱动”的跨平台、跨框架『同构方案』,欢迎了解...文前声明,以下推断和结论纯属个人探索,鉴于本人知识水平所限,谬......
  • sass---安装sass失败解决方法
    今天在做vue项目,项目是老项目新开,使用的webpack比较老旧,通过正常的安装sass的方法,报错,无法安装。常规的安装方法:1、安装sass-loadernpminstallsass-loader--save-de......
  • 论文阅读笔记-Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detect
    Gen-LaneNet:AGeneralizedandScalableApproachfor3DLaneDetectionGen-LaneNet:一种通用且可扩展的3D车道检测方法Abstract我们提出了一种通用且可扩展的方法,......
  • 窗口部件-基础窗口部件 QWidget
    1基础窗口部件QWidgetQWidget类是所有用户界面对象的基类,被称为基础窗口部件.不多废话直接看代码main.cpp如下#include<QtWidgets>intmain(intargc,char......
  • 面经-虚拟机-jvm内存结构
    虚拟机-jvm内存结构    方法区:存放类加载时的方法堆:存放new出来的对象虚拟机栈:记录方法内的局部变量和方法参数等信息。程序计数器:记录main线程执行中执行其......
  • el-tree只能同级拖拽排序
    <el-tree:data="treeData"node-key="id"draggable:allow-drop="allowDrop"@node-drop="handleDrop"></el-tree>主要是用到了allow-drop这个方法,然后去......
  • ABAP SD(販売) 受注・出荷・請求のユーザExit(User-exit)
    ユーザーExitSDモジュールでメインとなるユーザーEXITは販売:MV45AFZZ(他にもMV45AFZ*)、請求:RV60AFZZ(他にもRV60AFZ*)、出荷:MV50AFZZ(他にもMV50AFZ*)等ですが、それ以外......
  • Linux创建软连接--ln -s
    ln为某一个文件在另外一个位置建立一个同不的链接,这样操作之后就不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目......