Mat 浅拷贝
- Mat A
- A = imread(file,IMREAD_COLOR)
- Mat B(A)
Mat 深拷贝
- cv::Mat::clone()
- cv::Mat::copyTo()
- copy()
python 程序拷贝默认的是浅拷贝,浅拷贝只是将文件的头部信息(header)进行了变换, data数据没有变化,而深拷贝所有信息都变化。
import cv2 as cv
import numpy as np
img = cv.imread(r"C:\Users\Administrator\Desktop\2.png")
# 默认浅拷贝
img2 = img
# img[10:100, 10:100] = [0, 0, 255]
# cv.imshow('img',img)
# cv.imshow('img2',img2)
# 深拷贝
img3 = img.copy()
img[10:100, 10:100] = [0, 0, 255]
cv.imshow('img',img)
cv.imshow('img2',img2)
cv.imshow('img3',img3)
cv.waitKey(0)
Mat 的属性(图像的属性)
- shape
- size
- dtype
import cv2 as cv
import numpy as np
img = cv.imread(r"C:\Users\Administrator\Desktop\2.png")
# shape 属性中包含了三个信息,高度,长度,通道数
print(img.shape)
# (266, 205, 3)
# size 属性可以计算图像的大小:计算公式为,长度X高度X通道数
print(img.size)
# 163590
# dtype属性,可以获取图像的位深
print(img.dtype)
# uint8