opencv imshow图片显示不全

使用以下代码有时候会导致图像显示不全

1 img = cv2.imread("D:/Geekco/UAV_image_processing/UVA_image/201904/DJI_0147.JPG")
2 cv2.imshow("asd",img)
3 cv2.waitKey()

一开始还以为全白色是图像的位深或者格式出了问题,然而真实原因是图像显示不全,只显示了图像的一个角。

659ee8be309f277bbb9d4d85f3d85fad.png  

代码导致这个的原因是没有在图像显示之前设置窗口属性参数,应该把代码修改如下:

1 cv2.namedWindow('asd', cv2.WINDOW_NORMAL) 
2 img = cv2.imread("D:/Geekco/UAV_image_processing/UVA_image/201904/DJI_0147.JPG") 
3 cv2.imshow("asd",img) 
4 cv2.waitKey()

 namedWindow(winname[,flag])

win:代表窗口名称
flag: 窗口属性的标志位,flag提供以下选择:

  • WINDOW_NORMAL:允许手动调整窗口大小
  • WINDOW-AUTOSIZE:结合imshow会自动调整窗口大小,不允许手动调整
  • WINDOW_FREERATIO:可以对图像窗口进行调整,不考虑比例
  • WINDOW_KEEPRATIO:调整时保持图像比例
  • WINDOW_GUI_NORMAL:在没有状态栏和工具栏的情况下绘制窗口的老方法
  • WINDOW_GUI_EXPANDED:后者是一个新增强的GUI
  • By default, flags == WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED

但是为了完整得显示图片,多次尝试发现,flag参数为WINDOW_NORMAL时才可以在手动调整窗口的条件下显示完整的图片。

 

猜你喜欢

转载自www.cnblogs.com/hercules-chung/p/11370744.html