【OpenCV】6 Mat
一、Mat
Mat是一个矩阵,可能包含多个通道,用于表示灰度图像或彩色图像。
最大优点:通过NumPy可以直接以矩阵方式访问和操作。
二、底层实现
头部存放图像的属性,数据部分存放具体的图像数值。属性包括维度、行列数、宽高、数据指针等。

三、拷贝
- 浅拷贝:只拷贝头部信息,不拷贝数据部分。
- 深拷贝:拷贝头部信息和数据部分,适用于需要修改图像数据的情况。
选择使用浅拷贝还是深拷贝取决于具体的应用需求
浅拷贝示例图:

对比:

示例代码:
import cv2
import numpy as np
img = cv2.imread('img/cat.jpg')
# 浅拷贝
img2 = img
# 深拷贝
img3 = img.copy()
img[10:100, 10:100] = [0, 0, 255]
cv2.imshow('img', img)
cv2.imshow('img2',img2)
cv2.imshow('img3',img3)
cv2.waitKey(0)
四、属性
print(img.shape) # 高 长 通道数
print(img.size) # 占用空间 = 高 x 长 x 通道数
print(img.dtype) # 每个元素的位深
浙公网安备 33010602011771号