我正在使用OpenCV来阅读和显示图像。我正在尝试进行标量乘法,但两种类似方法的显示方式却截然不同:
img = cv2.imread('C:/Python27/user_scripts/images/g1.jpg', -1)
cv2.imshow('img_scaled1', 0.5*img)
cv2.waitKey(0)
cv2.imshow('img_scaled2', img/2)
cv2.waitKey(0)
在第一种情况下,几乎没有显示任何内容。第二种情况正常。
在我看来,imshow()
不支持numpy数组浮点数。
我想使用第一种方法。有人可以帮忙吗?
答案 0 :(得分:0)
使用图像时有很多陷阱。这个似乎是一个类型问题。
imshow
接受范围(0,256)中的uint8
数组(排除256个),范围(0.0,1.0)中的float
数组。执行a=a*.5
时,浮点数组超出范围,因此不保证结果。
解决方案是通过以下方式将数组转换为uint8
类型:
imshow((a*.5).astype(np.uint8))
或
imshow((a*.5).astype('uint8'))