pyqt5 QImage像素错位 颜色失真问题

最近在做血管OCT dicom文件的三视图,分出来的纵截面像素数组用matplotlib和opencv绘制都是正常的;但用QImage中显示错误,具体表现为颜色错乱,图像错位。放大看能看到,感觉是像素错位了。

绘制出上面这个图的代码是这样

 困扰了很久,最后QImage部分改为:

height, width, channel = sagittal_view.shape
bytes_per_line = 3 * width
image = QImage(sagittal_view, width,
               height, bytes_per_line, QImage.Format_RGB888)

 增加了bytes_per_line这个参数,此时图像显示正常了。猜测原因:QImage像素按行存储,RGB888 格式(即每个像素由 3 个字节表示的 RGB 图像),每个像素占用 3 个字节。为了确保内存中的数据对齐,每一行的字节数应该是 3 的倍数;如果行的宽度不是 3 的倍数,QImage 会在每一行的末尾添加额外的填充字节以实现对齐。可能是由于这个填补,导致错位了。指定了bytes_per_line之后就不会出错了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值