在视频中每秒绘制一个圆圈

时间:2019-01-23 13:41:29

标签: python opencv image-processing computer-vision

我每秒要在视频中绘制一些点以进行对象跟踪。

我可以使用opencv的VideoCapture轻松阅读视频。但是,当我在视频帧上绘制一些圆时,与视频帧相比,绘制速度更快。

cap = cv2.VideoCapture('video.mp4')
radius = [None]*10
radius = (1,2)
radius.append((2,3))
radius.append((3,4))
radius.append((4,5))
radius.append((5,6))
while(cap.isOpened()):
  ret, frame = cap.read()
  for i in range(len(radius)):
    cv2.circle(frame, radius[i], 5, (0,0,255), -1)
    cv2.imshow('test', frame)  # draw
each_second += 1
if cv2.waitKey(1) & 0xFF == ord('q'):
    break
cap.release()
cv2.destroyAllWindows()

在这种情况下,我每帧画一个'n'圈。但是我想每秒画一次,我该怎么做?

3 个答案:

答案 0 :(得分:1)

您只需将waitKey的值设置为1000就可以等待一秒钟。

答案 1 :(得分:0)

我不确定这是否可行,只是一个想法。

如果您知道视频的FPS,您可以只做一个计数器来判断经过了多少帧吗?

例如,如果您有60帧/秒的视频,则可以算出60帧来知道一秒钟过去了。

答案 2 :(得分:0)

我找到了解决方法:

cap = cv2.VideoCapture('video.mp4')
radius = [None]*10
radius = (1,2)
radius.append((2,3))
radius.append((3,4))
radius.append((4,5))
radius.append((5,6))
while(cap.isOpened()):
ret, frame = cap.read()
time_passed = int(cap.get(cv2.CAP_PROP_POS_MSEC))
if time_passed % 1000 ==0:
  print(time_passed)
  # draw circles
  for i in range(len(radius)):
    cv2.circle(frame, radius[i], 5, (0,0,255), -1)
    cv2.imshow('test', frame)  # draw

if cv2.waitKey(1) & 0xFF == ord('q'):
  break
cap.release()
cv2.destroyAllWindows()