在图切算法和目标跟踪交互的时候,往往需要用鼠标选定目标。用opencv+python实现画框选定目标和后续实现grabcut,代码如下。尤其注意画框时候的实时更新,否则画出来是实心的方块
import cv2
import numpy as np
ix,iy = -1,-1
bx,by = -1,-1
i=1
def draw(event,x,y,flags,param):
global ix,iy,bx,by,i
if event == cv2.EVENT_LBUTTONDOWN:
print('按下鼠标')
ix, iy = x,y
print('坐标1:',str(ix),str(iy))
elif event == cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
if i ==1:
print('鼠标滑动')
i = i+1
if i >1:
pass
img = img1.copy()#实时更新这一步很重要,如果没有这一步画出来会是一个方块
cv2.rectangle(img, (ix, iy), (x, y), (0, 0, 255), 3)
cv2.imshow('iron', img)
elif event == cv2.EVENT_LBUTTONUP:
print('鼠标抬起')
bx, by = x, y</