我试图使用opencv在python中显示图像,并在其上放置侧窗格。当我使用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
我似乎无法弄清楚为什么会这样。
答案 0 :(得分:3)
我能看到发生这种情况的唯一方法是两个图像之间的数据类型是否一致。确保在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))