У меня есть код, который рисует aws строку на видеокадре, используя opencv python. Но в моем случае на самом деле мне нужно нарисовать 3 линии на одном кадре одну за другой. Что означает рисование одной линии, за которой следует другая. Это код, который у меня есть
import cv2
import numpy as np
drawing=False # true if mouse is pressed
mode=True # if True, draw rectangle. Press 'm' to toggle to curve
# mouse callback function
class getPoints:
def __init__(self,frame,points):
self.frame = frame
self.points = points
def interactive_drawing(self,event,x,y,flags,param):
global ix,iy,drawing, mode
if event==cv2.EVENT_LBUTTONDOWN:
self.points.clear()
drawing=True
ix,iy=x,y
print(ix,it)
self.points.append((x,y))
elif event==cv2.EVENT_MOUSEMOVE:
if drawing==True:
if mode==True:
#cv2.circle(self.frame,(x,y),1,(0,0,255),-1)
print("move:",x,y)
#self.points.append([x,y])
elif event==cv2.EVENT_LBUTTONUP:
drawing=False
if mode==True:
cv2.circle(self.frame,(x,y),1,(0,0,255),-1)
self.points.append((x,y))
#print(self.points)
return self.points
class ROIselecter:
def drawROI(self,line1):
self.line1 =line1
global cap
ret, frame = cap.read()
frame_resized = imutils.resize(frame, width=500)
self.line1 = []
gp = getPoints(frame_resized, self.line1)
cv2.namedWindow('Window')
cv2.setMouseCallback('Window', gp.interactive_drawing)
while (1):
cv2.imshow('Window', frame_resized)
k = cv2.waitKey(1) & 0xFF
if k == ord('q'):
break
cv2.destroyAllWindows()
У меня есть одна строка, и я выполняю алгоритм, который принимает начальную и конечную точки линии в качестве входных данных и дает результат. Теперь я хочу выполнить тот же алгоритм с тремя строками. Пожалуйста, помогите решить эту проблему !!!