我正在使用 TKinter 开发一个 GUI,允许用户交互式设置用于处理某些图像的参数。 GUI 显示正在分析的图像,以便用户可以看到更改参数如何改变图像处理的结果。在意识到我用来处理图像的方法性能不佳后,我决定创建另一个可用于调试该方法的 GUI。此调试 GUI 将显示两个图像 - 正在处理的原始图像,以及将用于隔离原始图像上的功能的二进制掩码。开发这个 GUI 后,我注意到在显示图像时,图像中心现在有一个奇怪的白框,而原始图像上没有。
以下是例子来说明这个问题:
在TK标签上显示图像的原始代码:
def display_image(img):
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)
img = ImageTk.PhotoImage(image=img)
photo_label.imgtk = img
photo_label.config(image=img)
生成的图像(仅裁剪以显示发生问题的中心附近的区域): 它应该是什么样子
用于在调试 GUI 上显示图像的代码,允许选择是在原始照片标签上还是在二进制蒙版标签上显示图像:
def display_image(img, window = "photo"):
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)
img = ImageTk.PhotoImage(image=img)
if window == "photo":
photo_label.imgtk = img
photo_label.config(image=img)
elif window == "mask":
mask_label.imgtk = img
mask_label.config(image=img)
有问题的结果图像:
有谁知道为什么会发生这种情况以及我可以做些什么来摆脱它吗?
对于遇到此问题的任何人:我意识到我不小心将用于显示每个图像的标签放置在同一位置(使用网格放置标签并无意中将它们放在同一个单元格中) - 一旦我意识到这一点并修复它问题就消失了。