使用cv2.selectROI提取坐标时图像显示不全问题咨询
解决cv2.selectROI图像显示不全的问题
问题出在默认窗口会强制适配图像尺寸,当图像过大时就会只显示局部。你需要在调用selectROI之前创建支持缩放的窗口,而不是在读取图像时添加参数。
修正后的代码
import cv2 # 读取原始图像 image = cv2.imread("path") # 关键步骤:先创建可调整大小的窗口,指定cv2.WINDOW_NORMAL参数 cv2.namedWindow("select the area", cv2.WINDOW_NORMAL) # 可选:设置窗口初始大小(比如适配屏幕),避免打开时窗口过大 # cv2.resizeWindow("select the area", 800, 600) # 调用selectROI,此时会使用上面创建的可缩放窗口 r = cv2.selectROI("select the area", image) print('Selected bounding boxes: ', r) # 选完ROI后销毁窗口 cv2.destroyAllWindows()
关键说明
cv2.namedWindow必须在cv2.selectROI之前执行,这样selectROI才会复用这个已配置的窗口。- 窗口缩放只是视觉调整,返回的ROI坐标是基于原始图像的像素位置,完全准确,即使图像显示模糊也不影响坐标获取。
- 你可以拖动窗口边缘调整大小,部分环境下还能用鼠标滚轮缩放图像,方便框选目标区域。
内容的提问来源于stack exchange,提问作者user13347865
相关产品推荐
相关产品推荐

