opencv读取图片和视频

读取图片

设定好图片路径,用imread就可以读取存放为Mat格式,用imshow显示图片就ok了。

复制代码
std::string Path =
      "D:/Qttemp/OpencvStudy/chapter1/OpencvCourse/Resources/1.jpg";

  Mat img = imread(Path);
  if (img.empty()) {
    spdlog::error("读取图像失败: {}", Path);
    return 1;
  }
  imshow("OpenCV 测试", img);

这里用的绝对路径,显示效果就不展示了,免得侵权。

读取视频

视频文件其实是个图片组,用while循环videocapture读取出来存放到一个变量,然后和显示图片一样显示就行了

复制代码
std::string Path =
      "D:/Qttemp/OpencvStudy/chapter1/OpencvCourse/Resources/1.mp4";
      VideoCapture cap(Path);
      Mat frame;
      while(true){
        cap.read(frame);
        imshow("OpenCV test", frame);
        waitKey(1);

waitkey可以间接控制视频的播放速率

另外这段demo其实有个问题,点击关闭的时候会发现视频重新弹出关不掉,这是因为while循环一直是true,没有打破循环的条件,这里也是和显示图片有区别的地方。我们只需要改动一下代码

复制代码
int key = waitKey(30);
    if (key == 27) {
      break;
    }

key=27的时候就是用户按下esc键,会打破while循环解决,加上

复制代码
cap.release();
  destroyAllWindows();

这一段是释放资源关闭所有opencv显示窗口,操作就很丝滑没那些问题了。

效果:

没有处理按关闭键的,只处理按esc键的,按下程序就可以正常退出了。但其实还是很不爽,因为关闭按钮没法关闭,因为这个窗口的组件我没法获取,imshow创建的窗口不好控制,这个可以自己实现一个窗口来控制关闭。

相关推荐
armwind16 小时前
openISP学习8-GC — Gamma Correction(Gamma 校正)
图像处理·计算机视觉
大江东去浪淘尽千古风流人物16 小时前
【VGGT-Ω】前馈式3D重建的规模化之路:Register Attention、自监督训练与10B参数Scaling Law深度解析
深度学习·计算机视觉·transformer·slam·vio·3d重建
断眉的派大星16 小时前
YOLO26 完整学习笔记:从 Anchor-Free、TAL、STAL 到端到端无 NMS 部署
人工智能·笔记·学习·yolo·目标检测·计算机视觉·目标跟踪
却道天凉_好个秋18 小时前
HEVC(六):CTC
人工智能·计算机视觉·hevc·ctc
FOORIR 客流统计19 小时前
客流统计系统的工程实现:从线穿越计数到多目标跟踪
人工智能·计算机视觉·目标跟踪
点云兔子19 小时前
舱口检测:从点云到矩形定位的射线投影算法
opencv·算法·点云·舱口检测
YOLO数据集集合19 小时前
无人机电力巡检图像数据集 | 输电线路故障智能识别 深度学习目标检测数据集实战
人工智能·深度学习·目标检测·计算机视觉·无人机
cjie22119 小时前
lanczos插值引起的振铃现象
计算机视觉·fpga开发
蝈蝈Tjguo20 小时前
opencv 与摄影测量 相机坐标系的区别
人工智能·数码相机·opencv
盼小辉丶20 小时前
OpenCV-Python实战(26)——复杂场景下的实时物体检测与跟踪
python·opencv·计算机视觉