OpenCV Mat 备忘录

目录

[1. Mat 存储图像](#1. Mat 存储图像)

[2. Mat 本质是什么?](#2. Mat 本质是什么?)

[3. 常见 Mat 类型](#3. 常见 Mat 类型)

[4. Mat 访问像素](#4. Mat 访问像素)

[5. Mat 的一个重要特点:浅拷贝](#5. Mat 的一个重要特点:浅拷贝)

概念 理解
像素 图片中的一个小点
灰度像素 一个数字 0~255 0 = 黑色 128 = 灰色 255 = 白色
彩色像素 三个数字 B,G,R
0 最暗,没有光
255 最亮
Mat 存放这些像素的矩阵

在 OpenCV 里,Mat 是 矩阵(Matrix) 的意思,是 OpenCV 中最核心的数据结构之一,用来存储图像、矩阵数据、像素数据等。

在 C++ OpenCV 中,它对应:

复制代码
cv::Mat

例如:

cpp 复制代码
#include <opencv2/opencv.hpp>

cv::Mat img;

这里的 img 就是一个 Mat 对象,可以表示一张图片。


1. Mat 存储图像

比如读取图片:

cpp 复制代码
cv::Mat img = cv::imread("test.jpg");

此时:

  • img.rows:图片高度(行数)
  • img.cols:图片宽度(列数)
  • img.channels():通道数

例如一张普通彩色图片:

cpp 复制代码
1920 × 1080 × 3

表示:

  • 1080 行
  • 1920 列
  • 3 个颜色通道(B、G、R)

2. Mat 本质是什么?

可以简单理解:

cpp 复制代码
Mat
 |
 +-- 图像尺寸
 |
 +-- 数据类型
 |
 +-- 内存地址
 |
 +-- 像素数据

例如:

cpp 复制代码
cv::Mat m(3, 3, CV_8UC1);

创建一个:3行 × 3列的单通道 8 位矩阵:

复制代码
[0 0 0
 0 0 0
 0 0 0]

其中:

  • CV_8U:8位无符号整数
  • C1:1个通道

3. 常见 Mat 类型

类型 含义
CV_8UC1 8位灰度图
CV_8UC3 8位彩色图(BGR)
CV_8UC4 带透明通道图片
CV_32FC1 单通道浮点矩阵
CV_64FC3 三通道 double

例如:

cpp 复制代码
cv::Mat gray(480, 640, CV_8UC1);

灰度图:

cpp 复制代码
640 × 480

每个像素:

cpp 复制代码
0~255

4. Mat 访问像素

灰度图:

cpp 复制代码
uchar value = img.at<uchar>(100, 200);

表示:

cpp 复制代码
第100行,第200列

彩色图:

cpp 复制代码
cv::Vec3b pixel = img.at<cv::Vec3b>(100,200);

得到:

cpp 复制代码
[B, G, R]

5. Mat 的一个重要特点:浅拷贝

OpenCV 的 Mat 默认使用引用计数,复制不会立即复制数据:

cpp 复制代码
cv::Mat a = cv::imread("test.jpg");

cv::Mat b = a;

此时:

cpp 复制代码
a ----\
       ---> 同一块图像数据
b ----/

如果想真正复制:

cpp 复制代码
cv::Mat c = a.clone();
相关推荐
weixin_468466857 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
朋友圈自动点赞工具7 小时前
科学AI插件化:从蛋白质结构到古籍修复
人工智能
龙粤GEO8 小时前
实体Entity在GEO中代表什么含义
人工智能
拜小白9 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍9 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular9 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康9 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区9 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng9 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人9 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全