【OpenCV】6 Mat

一、Mat

Mat是一个矩阵,可能包含多个通道,用于表示灰度图像或彩色图像。
最大优点:通过NumPy可以直接以矩阵方式访问和操作。

二、底层实现

头部存放图像的属性,数据部分存放具体的图像数值。属性包括维度、行列数、宽高、数据指针等。
image

三、拷贝

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

浅拷贝示例图:
image

对比:
image

示例代码:

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)    # 每个元素的位深
posted @ 2025-09-05 12:32  苦涩如影相随固  阅读(7)  评论(0)    收藏  举报