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] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值