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()
4 cv2.destroyAllWindows()
一开始还以为全白色是图像的位深或者格式出了问题,然而真实原因是图像显示不全,只显示了图像的一个角。
代码导致这个的原因是没有在图像显示之前设置窗口属性参数,应该把代码修改如下:
1 cv2.namedWindow('asd', cv2.AUTOSIZE) 2 img = cv2.imread("D:/Geekco/UAV_image_processing/UVA_image/201904/DJI_0147.JPG") 3 cv2.imshow("asd",img) 4 cv2.waitKey()
5 cv2.destroyAllWindows()
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时才可以在手动调整窗口的条件下显示完整的图片。
posted on 2019-08-17 22:42 ChungRaybing 阅读(4937) 评论(0) 编辑 收藏 举报