我有这个代码,用户可以选择一个图像的矩形来裁剪它,但是当它们绘制它时,矩形是不可见的。有没有人知道如何修改这样的代码,以便在绘制时使其可见?
这是我的裁剪和裁剪方法 -
def click_and_crop(event, x, y, flags, param):
global refPt, cropping
if event == cv2.EVENT_LBUTTONDOWN:
refPt = [(x, y)]
cropping = True
elif event == cv2.EVENT_LBUTTONUP:
refPt.append((x, y))
cropping = False
cv2.rectangle(closeres, refPt[0], refPt[1], (0, 255, 0), 2)
cv2.imshow("image", closeres)
从这段代码中你可以看到它只显示鼠标按钮松开后的矩形,是否有某种方式可以绘制它,因为它们是在事件左键按下时绘制的?也许三角形的第一个点是它们点击的地方,第二个点是鼠标在哪里?
EDIT ---
我遵循了该教程并将方法改为此 -
def click_and_crop(event, x, y, flags, param):
global refPt, drawing, cropping
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
refPt = [(x, y)]
cropping = True
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.rectangle(closeres, refPt[0], (x,y),(0,255,0),2)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
refPt.append((x, y))
cropping = False
cv2.rectangle(closeres, refPt[0], refPt[1], (0, 255, 0), 2)
cv2.imshow("image", closeres)
它会在每个鼠标移动时绘制连续的矩形,而不是只改变一个矩形,有没有人知道如何修复?