【pythoncv2】图像矩阵数值和大小都一样,显示出来的图片不同
【pythoncv2】图像矩阵数值和⼤⼩都⼀样,显⽰出来的图⽚
不同除白蚁
学化妆需要准备什么>怎么开通网银问题:
⽤cv2读取视频帧,并且想对图⽚做⼀些修改,⽐如求两张图⽚叠加后平均的图像。于是发现,只要对读取出的帧做任意矩阵操作,⽐如与形状相同的0矩阵相加,按理说输出图像应该和原图像⼀致,但是相距甚远,输出矩阵和加0后的矩阵,矩阵数值完全相同。另外,按照元素的位置叠加矩阵元素,会⾃动对255取余。
相关代码:
path = filename + ".mp4"
video_capture = cv2.VideoCapture()吴君如搞笑电影全集
名字打分大全
if not video_capture.open(path):
pass
else:
num_frame = 0
flag = 0
temp = np.zeros((size_y, size_x, 3))
for i in range(1):
has_frame, frame = ad()
if has_frame:
frame = size(frame, (size_y, size_x))
cv2.imshow("yuantu", frame)
cv2.waitKey(0)
temp = temp + frame  # 原图加0矩阵汤灿被判刑
cv2.imshow("houtu", frame)
cv2.waitKey(0)
运⾏结果:
原图:
叠加0矩阵后:
原因:cv2读取帧的数据类型为unit8,即8位⽆符号整数,1个字节,取值为0-255,即RGB的颜⾊通道值,超出255会⾃动取余。⽽numpy数组的默认类型为numpy.float64,当直接对这两者进⾏相加操作时,会转换成float64,所以虽然矩阵的数值与原矩阵相同,但是数据类型变了,⽤cv2再次显⽰图⽚时就不是原图像了。
解决:在对矩阵操作时可以转为其他数据类型,但是对图像显⽰之前要转回unit8。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。