欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > openCV1.1 Mat对象

openCV1.1 Mat对象

2025/5/23 2:47:32 来源:https://blog.csdn.net/sbhsjjs/article/details/148103841  浏览:    关键词:openCV1.1 Mat对象

imread(“D:\souse\duoxile.jpg”, IMREAD_COLOR);

功能: 从指定路径读取图像文件并解码为OpenCV的Mat对象

第一个参数: 文件路径

  • 类型: const string&
  • 描述: 要读取的图像文件的绝对或相对路径
  • 示例: “D:\souse\duoxile.jpg” 或 “./images/test.png”

第二个参数: 读取模式标志

  • 类型: int
  • 描述: 指定图像的解码方式和通道处理策略
  • 常用标志及其功能:
    • IMREAD_GRAYSCALE (值=0):
      将图像转换为单通道灰度图像读取
      输出Mat对象通道数: 1
      数据类型: CV_8UC1 (8位无符号单通道)

    • IMREAD_COLOR (值=1):
      将图像转换为BGR三通道彩色图像读取
      忽略任何Alpha通道(透明度信息)
      输出Mat对象通道数: 3
      数据类型: CV_8UC3 (8位无符号三通道)

    • IMREAD_ANYCOLOR (值=4):
      以图像本身的颜色模式读取
      如果是彩色图像则保持BGR三通道
      如果是灰度图像则保持单通道
      忽略Alpha通道
      输出Mat对象通道数: 1或3

    • IMREAD_UNCHANGED (值=-1):
      按原样读取图像,包括任何Alpha通道
      彩色图像带透明度: 输出BGRA四通道
      灰度图像带透明度: 输出两通道(灰度+Alpha)
      输出Mat对象通道数: 1、2、3或4
      数据类型: 通常为CV_8UC(n)

namedWindow(“input”, WINDOW_NORMAL);

功能: 创建一个指定名称的窗口,并设置窗口属性为可自由缩放
参数1: 窗口名称

  • 类型: const string&
  • 描述: 窗口的唯一标识名称,用于后续引用操作
  • 示例: “input”、“Result Window”

参数2: 窗口属性标志

  • 类型: int
  • 描述: 指定窗口的创建模式和功能特性
  • 常用标志及其功能:
    • WINDOW_NORMAL (值=0):
      创建可自由调整大小的窗口
      支持鼠标拖拽边框改变窗口尺寸
      可与其他标志组合使用

    • WINDOW_AUTOSIZE (值=1):
      窗口大小自动适应图像尺寸
      无法手动调整窗口大小

    • WINDOW_FULLSCREEN (值=2):
      以全屏模式显示窗口
      覆盖整个屏幕,隐藏任务栏等系统元素

    • WINDOW_OPENGL (值=4):
      创建支持OpenGL渲染的窗口
      用于需要硬件加速图形处理的场景

补充说明:

  1. 该函数需在imshow()之前调用,用于提前定义窗口属性
  2. 窗口名称相同则视为同一个窗口,后续创建操作会覆盖之前的设置
  3. 可通过resizeWindow()函数动态调整窗口大小(需配合WINDOW_NORMAL标志)
  4. 在高DPI显示器上,可能需要结合setWindowProperty()设置缩放系数

Mat对象

功能:图像文件的内存数据对象

在这里插入图片描述

成员参数:

int width = mat.cols;

int height = mat.rows;
int dim = mat.dims;//维数
int channels = mat.channels();

int type = mat.type(); //获取图像类型
int depth = mat.depth(); //获取图像深度
在这里插入图片描述

Mat对象的创建

	//创建一个256*256的单通道图像Mat t1 = Mat(256,256,CV_8UC3);//Scalar:t1 = Scalar(0,0,255);//初始化为Mat t2 = Mat(Size(500, 500), CV_8UC3);t2 = Scalar(0, 255, 0);//初始化为Mat t3 = Mat(Size(500, 500), CV_8UC3);t3 = Scalar(255, 0, 0);//初始化为Mat t4 = mat;//本质上是引用Mat t5 = mat.clone();//深拷贝

Mat 的遍历

基于opencv库函数

	//获取图像的行数和列数int rows = mat.rows;int cols = mat.cols;int ch = mat.channels();for (int row = 0; row < height; row++) {for (int col = 0; col < width; col++) {if (ch == 3) {//Vec3b::表示一个3通道的像素值Vec3b pi=mat.at<Vec3b>(row, col);int blue = pi[0];int green = pi[1];int red = pi[2];mat.at<Vec3b>(row, col)[0] =

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词