利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题

问题利用cv.imread读取图像,再利用plt.imshow发现图像显示出来色彩不对

import cv2
img = cv2.imread(img_path)

利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题_第1张图片
原因
cv2与matplotlib的显示模式不一致,opencv读取的彩色图像是BGR格式,Matplotlib显示彩色图像是RGB格式
解决办法
调整rgb显示模式
利用

b,g,r=cv2.split(img)
img2 = cv2.merge([r,g,b])

利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题_第2张图片

其他问题
利用matplotlib进行两幅图像叠加显示时出错`

Clipping input data to the valid range for imshow with RGB data
([0…1] for floats or [0…255] for integers).
利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题_第3张图片

解决办法
加上astype语句转换数据类型

heatmap2 = heatmap2.astype(int)

效果
利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题_第4张图片

你可能感兴趣的:(利用matplotlib的plt.imshow显示cv2图像,以及图像叠加显示数据类型不对的问题)