Python OpenCV绘制几个圆圈并保留它们



每次点击时,我都想在摄像头的图像上画一个圆圈。但是,我希望圆圈留在图像上,并在每次新的点击中添加新的圆圈。是否有一种方法来修改我当前的代码来做到这一点?

import cv2
cap = cv2.VideoCapture(0)
center = (0,0)
def mouseCallback(event,x,y,flags,param):
global center
if event == cv2.EVENT_LBUTTONDOWN:
center = (x,y)

def draw_circle(frame, center):
cv2.circle(frame, center = center, radius = 50,color = (0, 0, 255),thickness=5)
cv2.namedWindow('frame')
cv2.setMouseCallback('frame',mouseCallback)
while True:
ret, img = cap.read()
draw_circle(img,center)
cv2.imshow('frame',img)
if cv2.waitKey(20) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()

我没有找到任何关于如何使一个形状留在视频中的信息。

任何帮助都是感激的:)

您可以使用列表来存储圆的坐标。快速代码草图:

import cv2
cap = cv2.VideoCapture(0)
circles = []
def mouseCallback(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
circles.append((x,y))
def draw_circle(frame, circles):
for center in circles:
cv2.circle(frame, center = center, radius = 50,color = (0, 0, 255),thickness=5)
cv2.namedWindow('frame')
cv2.setMouseCallback('frame',mouseCallback)
while True:
ret, img = cap.read()
draw_circle(img, circles)
cv2.imshow('frame',img)
if cv2.waitKey(20) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()

最新更新