我正在尝试使用opencv使图像在python中显示,并在其上带有侧 Pane 。当我使用np.hstack
时,主图片变成难以识别的白色,只有少量颜色。这是我的代码:
img = cv2.imread(filename)
img_with_gt, gt_pane = Evaluator.return_annotated(img, annotations)
both = np.hstack((img_with_gt, gt_pane))
cv2.imshow("moo", both)
cv2.waitKey(0)
cv2.destroyAllWindows()
这是结果图
但是,如果我查看
img_with_gt
,它看起来是正确的。甚至适用于
gt_pane
我似乎无法弄清楚为什么会这样。
最佳答案
我看到发生这种情况的唯一方法是,如果两个图像之间的数据类型不一致。确保在return_annotated
方法内部,img_with_gt
和gt_pane
都共享相同的数据类型。
您提到了您要为gt_pane
分配空间成为float64
的事实。这表示[0-1]
范围内的强度/颜色。将图像转换为uint8
并将结果乘以255,以确保两个图像之间的兼容性。如果要保留图像不变而处理分类图像(右图),请转换为float64
,然后除以255。
但是,如果您希望保持该方法不变,则可以执行以下简单修复:
both = np.hstack(((255*img_with_gt).astype(np.uint8), gt_pane))
您也可以采用其他方法:
both = np.hstack((img_with_gt, gt_pane.astype(np.float64)/255.0))
关于python - 如何停止numpy hstack在opencv中更改像素值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31276000/