opencv cv2.imshow 自动给小图添加padding

opencv cv2.imshow automatically add padding to small image

我尝试使用 cv2.imshow() 来显示图像,但是我发现结果会自动用空白填充。我使用的代码如下:

import cv2
if __name__ == '__main__':   
    img = cv2.imread('test2.png')
    cv2.imshow('dafasf', img)
    key = cv2.waitKey(0)
    if key == 27: # ESC
    cv2.destroyAllWindows()

默认情况下 imshow 创建具有 WINDOW_AUTOSIZE 属性的 window 对象。这意味着 window 大小由 OpenCV 编译的某些前端(GUI)决定。

你的图片实际上并没有改变,只是显示问题。

如果你想手动控制 window 属性,你可以尝试在 imshow 调用之前用你的属性创建 namedWindow,i. e.像这样:

cv2.namedWindow("window name", cv2.WINDOW_NORMAL)
cv2.imshow("window name", img)

根据 documentation 显示 window 有 3 个属性(WINDOW_NORMALWINDOW_AUTOSIZEWINDOW_OPENGL),但使用以下简单代码段您可以确定您实际支持的值(在我的版本中,我看到 WINDOW_FREERATIOWINDOW_FULLSCREENWINDOW_AUTOSIZEWINDOW_NORMALWINDOW_KEEPRATIOWINDOW_OPENGL):

[i for i in list(cv2.__dict__.keys()) if i[:6] == 'WINDOW']