Python | 关于OpenCV和plt画图中数据类型不为unit8的问题

引言

对图像做了一个RGB-> LAB ,再转RGB的一个转换。转换后用plt画图时,发现显示出来的图像,和保存下来的图像,颜色显示不太一致。最开始还以为是电脑的问题,但是转用OpenCV画图时,直接报错了。查阅资料才发现,这个是跟图像矩阵中的数据类型有关。

程序

1. OpenCV

程序:
图像显示程序为:

cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:
python报错为:

>>> (-215:Assertion failed) dst.data == (uchar*)dst_ptr in function 'cvShowImage'

原因分析:
OpenCV画图中,只支持uint8的数据类型。 因此,若图像矩阵数据类型不为uint8,需要再画图前转换。

改进:
数据类型转换代码为(两种类型):

 data = np.array(data,dtype='uint8')  # 第一种
 data = np.uint8(data)  # 第二种

2. plt

程序:
plt画图程序为:

 img_plt = cv2.cvtColor(img_RGB,cv2.COLOR_BGR2RGB)     # cv2转plt画图
 plt.imshow(img_plt, 'gray')
 plt.title('img_solar')
 plt.show()

结果:
用plt 画图时,程序并不会报错,只是显示出的图像,和原本的图像像素值不一致。

修改:
同样,在画图前,调用数据类型转换代码。
数据类型转换代码为(两种类型):

 data = np.array(data,dtype='uint8')  # 第一种
 data = np.uint8(data)  # 第二种

参考资料

  1. https://blog.csdn.net/jacke121/article/details/87723912
  2. https://blog.csdn.net/fsgongzi/article/details/88788557
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值