在对图像二值化处理时,遇到的这个问题,当一张图全为1(255)时,无法正常的显示图片。求帮忙解决一下。试过Opencv可以正常显示,但不利于对图像数据的分析和观察。
"""
二值图像显示全白问题
"""
import numpy as np
import matplotlib.pyplot as plt
import cv2
image_0 = np.zeros((200,200))
image_01 = np.concatenate((np.zeros((200,100)),np.ones((200,100))), axis =1)
image_1= np.ones((200,200))
image_255 = image_1*255
plt.rcParams['font.sans-serif'] = ['SimHei']
#方法一plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure()
plt.title('全0图像')
plt.imshow(image_0, cmap = 'gray')
plt.figure()
plt.title('二值黑白图像')
plt.imshow(image_01, cmap = 'gray')
plt.figure()
plt.title('全1图像')
plt.imshow(image_1, cmap = 'gray')
plt.figure()
plt.title('全255图像')
plt.imshow(image_255, cmap = 'gray')
#方法二opencv
cv2.imshow('0',image_0)
cv2.imshow('01',image_01)
cv2.imshow('1',image_1)
cv2.imshow('255',image_255)
这是matplotlib显示结果,无法正常显示。
这是opencv显示结果,能够正常显示。
opencv中读取设置图像默认为GBR格式
plt格式为通常认为的RGB格式
转换方法:
import cv2
import numpy as np
import matplotlib.pyplot as plt
path="images/test.png"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.figure(figsize=(10,10))
plt.subplot(1,2,1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))#BGR转RGB
plt.xlabel(u'hand.png')
plt.subplot(1,2,2)
plt.imshow(cv2.cvtColor(gray, cv2.COLOR_BGR2RGB))
plt.xlabel(u'ret.png')
plt.show()