当前位置: 首页 > news >正文

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] =

相关文章:

  • Memory模块是agent的一个关键组件
  • 用java实现内网通讯,可多开客户端链接同一个服务器
  • LeetCode-链表-合并两个有序链表
  • C# string 转枚举
  • 大量程粗糙度轮廓仪适用于哪些材质和表面?
  • 基于多传感器融合的智能驾驶环境感知系统
  • Unittest框架及自动化测试实现流程
  • Java多线程深度解析:从核心机制到高阶实战
  • 鸿蒙UI开发——Builder与LocalBuilder对比
  • OpenCv高阶(十六)——Fisherface人脸识别
  • bi工具是什么意思?bi工具的主要功能有哪些?
  • 黑马程序员C++2024新版笔记 第4章 函数和结构体
  • 《Effective Java(第三版)》笔记
  • 校平机的原理、应用及发展趋势
  • 全球机加工的市场概况及发展趋势
  • linux系统查看硬盘序列号
  • 在离线 OpenEuler-22.03 服务器上升级 OpenSSH 的完整指南
  • FPGA设计需要学什么?
  • 129.在 Vue3 中使用 OpenLayers 实现点击获取重叠要素信息(支持多 Feature)
  • 数据结构(4)线性表-链表-双链表
  • 网站推广其他方案内容/外国网站怎么进入
  • 郑州网站制作怎么样/青岛seo网站排名优化
  • 中山企业网站制作公司/百度自媒体平台
  • 河南靠谱网站建设推荐/外贸seo推广
  • 建设心理网站/seo管理系统培训运营
  • 如何在网站源码做授权/网络营销做得比较成功的案例