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渲染的窗口
用于需要硬件加速图形处理的场景
-
补充说明:
- 该函数需在imshow()之前调用,用于提前定义窗口属性
- 窗口名称相同则视为同一个窗口,后续创建操作会覆盖之前的设置
- 可通过resizeWindow()函数动态调整窗口大小(需配合WINDOW_NORMAL标志)
- 在高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] =