imshow能显示,但imwrite保存后就是一个黑图,那就看一下前后图片的数组信息。
img6 = cv2.rotate(obj1,cv2.ROTATE_180)#顺时针旋转180度
plt.imshow(img6,cmap='gray')
#img6
[[2.93929499e-20 2.93929499e-20 2.96123003e-20 ... 3.33412566e-20
3.33412566e-20 3.33412566e-20]
此时的img6已经是小数点后18位的数了,直接进行cv2,imwrite的时候,会将数值取整,最终保存的为一个全零数组,显示为黑色。cv2,imwrite的保存类型为uint8,0-255的整型,因此需要在保存前进行数值提升
cv2.imwrite('./img6.png',img6*10**19*255)
print(img6*10**19*255)
[[ 74.95202225 74.95202225 75.5113657 ... 85.02020435 85.02020435
85.02020435]
这样再进行读取就没有问题了,0-1归一化的数值同理,提升到0-255即可
obj2 = cv2.cv2.imread('./img6.png',0)
plt.imshow(obj2,cmap='gray')
uint8
[[ 75 75 76 ... 85 85 85]
[ 75 75 76 ... 85 85 85]
[ 75 75 76 ... 85 85 85]
|