如何在opencv python中跟踪不同的轮廓

2024-10-02 22:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python中的opencv从录制的视频中跟踪对象。我想给每个可见对象一个唯一的对象nr。例如,一个对象进入屏幕并得到nr1,然后第二个对象加入第一个对象并得到nr2,然后第一个对象离开屏幕,但第二个对象仍然可见,并且仍然得到对象nr2而不是1(作为唯一的对象)。我在网上找不到任何关于怎么做的信息。感谢任何帮助(包括代码)。

到目前为止,我编写的用于获取轮廓和绘制对象编号的代码:

cap = cv2.VideoCapture("video.mov")
while True:
    flag, frame = cap.read()
    cv2.drawContours(frame, contours, -1, (255,0,0) ,1)
    for i in range(len(contours)):
        cnt = contours[i]
        cnt_nr = i+1
        x,y,w,h = cv2.boundingRect(cnt)
        cv2.putText(frame, str(cnt_nr), ((x+w)/2,(y+h)/2), cv2.FONT_HERSHEY_PLAIN, 1.8, (0,0,0))
    cv2.imshow("Tracked frame",frame)
    k = cv2.waitKey(0)
    if k == 27: 
        cv2.destroyAllWindows()
        break

Tags: 对象代码信息视频屏幕cv2frameopencv