首页 > 其他分享 >OpenCV 图像读写和显示

OpenCV 图像读写和显示

时间:2023-11-04 16:45:48浏览次数:29  
标签:Mat MatType 读写 Cv2 channels OpenCV 图像 ImreadModes 读取

图像读取

ImRead() 函数可从文件中读取图像, 并生成一个Mat对象, ImRead() 函数支持绝大多数图像格式.
注意点:

  • 读取后生成的Mat对象, 颜色空间为BGR,
  • 第二参数为读取方式, 常用的方式有:
    . ImreadModes.Color: 彩色方式读取, 即使原图是4通道或者单通道, 生成的 Mat 永远为三通道.
    . ImreadModes.AnyColor: 按照自适应的方式读取, 如果是灰度图, 生成的Mat为单通道, 如果是彩色图像, Mat将为三通道.
    . ImreadModes.Unchanged : 如果原图带有alpha透明通道, 使用这个方式将同时读取 alpha 通道
    . ImreadModes.Grayscale: 按照灰度模式读取, 生成Mat为单通道

图像的展示

ImShow() 函数可以用于展示Mat, 注意点有:

  • 仅能正常显示BGR色彩空间的Mat, 如果是其他色彩空间的Mat可以显示,但会失真, 如果要显示其他色彩空间的Mat, 需要首先转回BGR空间
      private void showImages()
      {
          string pngFile = @"D:\my_workspace\opencv\images\draw.png";
          var unchangedMode = Cv2.ImRead(pngFile, ImreadModes.Unchanged);
          string unchangedModeInfo = $"channels:{unchangedMode.Channels()}, MatType: {unchangedMode.Type()}";
          var colorMode = Cv2.ImRead(pngFile, ImreadModes.Color);
          string colorModeInfo = $"channels:{colorMode.Channels()}, MatType: {colorMode.Type()}";
          var anyColorMode = Cv2.ImRead(pngFile, ImreadModes.Color);
          string anyColorModeInfo = $"channels:{anyColorMode.Channels()}, MatType: {anyColorMode.Type()}";
          var grayscaleMode = Cv2.ImRead(pngFile, ImreadModes.Grayscale);
          string grayscaleModeInfo = $"channels:{grayscaleMode.Channels()}, MatType: {grayscaleMode.Type()}";

          Cv2.ImShow("unchangedMode", unchangedMode);
          Cv2.ImShow("colorMode", colorMode);
          Cv2.ImShow("anyColorMode", anyColorMode);
          Cv2.ImShow("grayscaleMode", grayscaleMode);
          Cv2.WaitKey();
          Cv2.DestroyAllWindows();
      }

几种Mat读取方式的通道和数据类型结果:

unchangedModeInfo 输出: "channels:4, MatType: CV_8UC4"
colorModeInfo 输出: "channels:3, MatType: CV_8UC3"
anyColorModeInfo 输出:  "channels:3, MatType: CV_8UC3"
grayscaleModeInfo 输出: "channels:1, MatType: CV_8UC1"

图像显示截图:

标签:Mat,MatType,读写,Cv2,channels,OpenCV,图像,ImreadModes,读取
From: https://www.cnblogs.com/harrychinese/p/17809463.html

相关文章

  • 机器学习——图像卷积
    特征映射和感受野 因此,当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络 。 利用卷积网络进行目标边缘检测......
  • QT + OPENCV + OpenCV_contrib + MINGW编译
    参见  QT+OPENCV+OpenCV_contrib+MINGW编译_东方.既白的博客-CSDN博客注意事项:1. opencv不要采用版本太高的,与mingw730_64编译器不兼容。太多错误2. ......
  • JUC并发编程学习笔记(八)读写锁
    读写锁ReadWriteLockReadWriteLock只存在一个实现类那就是ReentrantReadWriteLock,他可以对锁实现更加细粒化的控制读的时候可以有多个阅读器线程同时参与,写的时候只希望写入线程是独占的Demo:packageorg.example.rw;importjava.util.HashMap;importjava.util.Map;impo......
  • 01.矢量图像和数字图像区别
    矢量图像和数字图像是两种不同的图像表示方式:矢量图像:矢量图像使用数学公式来描述图像中的几何形状和颜色信息。它由一系列点、线段和曲线组成,每个元素都有其位置和属性。矢量图像可以无限缩放而不失真,因为它们基于数学公式生成,而不是像素网格。数字图像:数字图像由像素组成,......
  • OpenCV 基础数据类型
    常用基础数据类型Rect/Rect2d/Rect2f定义一个矩形区域,带大小和位置Size/Size2d/Size2f定义一个矩形大小,不带位置Point/Point2d/Point3i定义一个二维或三维的点坐标Range/Rangef,定义一个带有下上限的范围Vec3b/Vec3d/Vec4b,定义一个三维或四维的向量,Mat的每个点......
  • pytorch图像变换和增强
    pytorch图像变换和增强目录pytorch图像变换和增强总览调整大小灰度变换标准化水平垂直翻转随机旋转中心裁剪随机裁剪亮度对比度饱和度高斯模糊高斯噪声随机块中心区域参考资料总览#使用数据增强技术可以增加数据集中图像的多样性,从而提高模型的性能和泛化能力。1.尺寸变换tr......
  • TensorFlow、PyTorch、Keras、Scikit-learn和ChatGPT。视觉开发软件工具 Halcon、Visi
     目录TensorFlow、PyTorch、Keras、Scikit-learn和ChatGPT1.TensorFlow2.PyTorch3.Keras视觉开发软件工具Halcon、VisionPro、LabView、OpenCV,还有eVision、Mil、Sapera等。(一)、Halcon(二)OpenCV:ComputerVision(计算机视觉)(三)VisionProTensorFlow、PyTorch、Keras、Scikit-learn和......
  • nginx coturn socat privoxy opencv 静态编译
    文档说明:只记录关键的地方;发文时间:2023-11-02意义:linux环境,免安装下载后即可使用环境:alpine:3.18dockerclang状态:完善中体验编译结果nginx静态编译关键点nginxusePCRE2libraryonnginx1.21.5hg脚本全称是mercurialopensslzlibpcpre2等静态库......
  • 带你认识一下多模态对比语言图像预训练CLIP
    本文分享自华为云社区《多模态对比语言图像预训练CLIP:打破语言与视觉的界限》,作者:汀丶。一种基于多模态(图像、文本)对比训练的神经网络。它可以在给定图像的情况下,使用自然语言来预测最相关的文本片段,而无需为特定任务进行优化。CLIP的设计类似于GPT-2和GPT-3,具备出色的零射击能力......
  • 带你认识一下多模态对比语言图像预训练CLIP
    本文分享自华为云社区《多模态对比语言图像预训练CLIP:打破语言与视觉的界限》,作者:汀丶。多模态对比语言图像预训练CLIP:打破语言与视觉的界限一种基于多模态(图像、文本)对比训练的神经网络。它可以在给定图像的情况下,使用自然语言来预测最相关的文本片段,而无需为特定任务进行优化。CL......