如何配置cv2.imshow()窗口:仅显示适配尺寸的无控件图像
解决OpenCV显示窗口的问题
要实现干净无额外控件、且尺寸与图像完全匹配的窗口,你需要在显示图像前设置正确的窗口属性,具体步骤如下:
- 先获取缩放后图像的宽高尺寸
- 创建窗口时指定无工具栏的类型,去掉保存、缩放等额外控件
- 强制设置窗口大小与图像完全匹配
- 最后显示图像
完整代码示例:
import cv2 # 假设你已定义result_img、RESIZE_FX、RESIZE_FY resized_result_img = cv2.resize(result_img, (0, 0), fx=RESIZE_FX, fy=RESIZE_FY) # 获取缩放后图像的宽高 height, width = resized_result_img.shape[:2] # 创建无工具栏的窗口 cv2.namedWindow("img", cv2.WINDOW_GUI_NORMAL) # 设置窗口大小与图像完全匹配 cv2.resizeWindow("img", width, height) # 显示图像 cv2.imshow("img", resized_result_img) # 必须添加等待按键和销毁窗口的代码 cv2.waitKey(0) cv2.destroyAllWindows()
补充说明
cv2.WINDOW_GUI_NORMAL是OpenCV针对Qt后端提供的窗口类型,会隐藏默认的工具栏控件- 如果你的OpenCV未使用Qt后端,可改用
cv2.WINDOW_NORMAL,配合resizeWindow同样能解决尺寸不匹配问题 - 所有窗口属性设置必须在
imshow之前调用,否则不会生效
内容的提问来源于stack exchange,提问作者Sak G
相关产品推荐
相关产品推荐

