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

相关推荐
咖啡里的茶i17 分钟前
无监督域自适应:计算机视觉新突破
人工智能·计算机视觉
幻奏岚音40 分钟前
AI模型用户画像分析_new
人工智能·算法·计算机视觉·数据挖掘
深度学习lover1 小时前
<数据集>yolo 笔识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·笔识别
AI棒棒牛2 小时前
YOLO26最新创新改进:引入 CVPR2026 FAAFusion,普通目标检测获得方向鲁棒性,创新性强!
人工智能·目标检测·计算机视觉·rt-detr·yolo26
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章73-点-线距离
图像处理·人工智能·opencv·算法·计算机视觉
人月神话-Lee3 小时前
【图像处理】二值化与阈值——从灰度到黑白的决策
图像处理·人工智能·计算机视觉
C+++Python3 小时前
如何使用OpenCV进行颜色与阈值处理?
人工智能·opencv·计算机视觉
大模型最新论文速读4 小时前
OpenSeeker-v2:仅用 1w 条数据 + SFT,训练 Deep Research 达到 SOTA
人工智能·深度学习·机器学习·计算机视觉·自然语言处理
晓蓝WQuiet4 小时前
opencv从入门到。。。。
人工智能·opencv·计算机视觉
结构化知识课堂14 小时前
AI产品经理入门实战:如何理解计算机视觉?
人工智能·计算机视觉·产品经理·ai产品经理·ai产品设计