当前位置: 首页 > 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] =
http://www.xdnf.cn/news/560215.html

相关文章:

  • 中级统计师-统计学基础知识-第五章 相关分析
  • Day 0014:信息收集工具链
  • 搭建人工智能RAG知识库的主流平台与特点概述
  • 第9.2讲、Tiny Decoder(带 Mask)详解与实战
  • nfs存储IO等待,导致k8s业务系统卡慢问题处理
  • 基于R语言的贝叶斯网络模型实践技术应用:开启科研新视角
  • 安灯系统让注塑机故障响应快如闪电告别停机烦恼
  • 空调系统虚拟标定技术:新能源汽车能效优化的革命性突破
  • C++使用max_element()配合distance()求出vector中的最大值及其位置
  • Oracle基础知识(一)
  • 强化学习_置信域算法RL
  • 【DeepSeek】为什么需要linux-header
  • arrow-0.1.0.jar 使用教程 - Java jar包运行方法 命令行启动步骤 常见问题解决
  • jvm对象压缩
  • Hellorobot 移动操作机器人开源实践:HPR 模型 + 全栈资源,降低家庭机器人开发门
  • 攻防世界 Web题--easytornado
  • 《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
  • BigemapPro蒙版使用技巧:精准导出地图范围
  • Paillier加密方案的原理、实现与应用(vs)
  • Unity自定义shader打包SpriteAtlas图集问题
  • 101个α因子#7
  • 多角色对账效率低?易境通散货拼柜系统如何高效协同?
  • QT学习笔记---表格
  • CAP理论 ,了解一下什么是CAP理论
  • 绿盟防火墙6.0.5版本—接入网监平台
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·状态机模型
  • 环境配置!
  • vue3学习文档(开发文档)
  • HBCPC2025 补题 (F、I)
  • 算法打卡第二天