我尝试使用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()
答案 0 :(得分:3)
默认情况下imshow
创建具有WINDOW_AUTOSIZE
属性的窗口对象。这意味着窗口大小由一些前端(GUI)决定, OpenCV 是用它编译的。
您的图片实际上并未更改,只是显示问题。
如果您想手动控制窗口属性,可以在namedWindow
调用之前尝试使用您的属性创建imshow
,i。即像这样的东西:
cv2.namedWindow("window name", cv2.WINDOW_NORMAL)
cv2.imshow("window name", img)
根据documentation,窗口显示有3个属性(WINDOW_NORMAL
,WINDOW_AUTOSIZE
和WINDOW_OPENGL
),但使用以下简单代码段,您可以确定实际支持的值(在我的版本中,我看到WINDOW_FREERATIO
,WINDOW_FULLSCREEN
,WINDOW_AUTOSIZE
,WINDOW_NORMAL
,WINDOW_KEEPRATIO
和WINDOW_OPENGL
):
[i for i in list(cv2.__dict__.keys()) if i[:6] == 'WINDOW']