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创建的窗口不好控制,这个可以自己实现一个窗口来控制关闭。

相关推荐
TAN-90°-3 小时前
Deep Learning for Computer Vision——Attention and Transformers
人工智能·深度学习·神经网络·机器学习·计算机视觉·cnn·机器翻译
OpenBayes4 小时前
Qwen3.8-27B-FP8 降低大模型部署门槛,开启高效多模态智能体验;MiniMax H3-1K 发布千段视频测试数据集,全面评估 AI 视频生成能力
人工智能·深度学习·计算机视觉·自然语言处理·语音识别·多模态大模型
AI的探索之旅4 小时前
97 个 OpenCV 实例(十三):目标跟踪,CamShift 反向投影
人工智能·opencv·目标跟踪
梦想的颜色5 小时前
ComfyUI 深度硬核科普:节点式 AI 生成框架完整实战(安装、原理、使用场景、避坑)
人工智能·机器学习·计算机视觉·aigc·comfyui·ai视频·图生视频
动物园猫6 小时前
草莓成熟度目标检测数据集:3类别、2,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
AI浩19 小时前
关于 Qwen3.8-Next 架构的设计:评估、效率与训练稳定性
人工智能·计算机视觉·自然语言处理
jay神1 天前
一文讲清楚YOLOv26模型
人工智能·深度学习·yolo·机器学习·计算机视觉
qq_25294131681 天前
无人机目标检测数据集(UAV Detection Dataset)| 无人机检测 反无人机 低空安防5001期
人工智能·yolo·目标检测·计算机视觉·视觉检测·无人机·反无人机
hhzz1 天前
边缘AI视频分析引擎实战:可视化拖拽编排流水线把模型快速跑起来
人工智能·计算机视觉·边缘计算·智能安防·ai视频分析·流水线编排
点PY1 天前
《一种超分辨率重建方法和相关装置》专利解析
人工智能·计算机视觉·超分辨率重建