我是Python的初学者,想问我是否可以在一个视频上绘制不同功能的图像?以下是我的练习代码。
import numpy as np
import cv2
from multiprocessing import Process
cap = cv2.VideoCapture('C:/Users/littl/Desktop/Presentation/Crop_DownResolution.mp4')
def line_drawing():
while cap.isOpened():
ret, img = cap.read()
if ret is True:
cv2.line (img,(50,180),(380,180),(0,255,0),5)
cv2.imshow('img',img)
k = cv2.waitKey(1) & 0xff
if k == 27:
break
else:
break
cap.release()
cv2.destroyAllWindows()
def rectangle_drawing():
while cap.isOpened():
ret, img = cap.read()
if ret is True:
cv2.rectangle(img,(180,0),(380,128),(0,255,0),3)
cv2.imshow('img',img)
k = cv2.waitKey(1) & 0xff
if k == 27:
break
else:
break
cap.release()
cv2.destroyAllWindows()
if __name__=='__main__':
p1 = Process(target = rectangle_drawing)
p1.start()
p2 = Process(target = line_drawing)
p2.start()
当我运行代码时,它为我提供了两个运行相同视频的选项卡,一个用于绘制线条,另一个用于绘制矩形。如何让矩形和线条都在视频上并将功能分开,而不是将它们放在同一个功能中?
答案 0 :(得分:2)
我无法用Python代码给你答案但是......
你所拥有的是两个不同的线程,既可以独立地从视频源中捕获数据,也可以在不同的数据上绘制元素。
您需要做的是让一个进程只负责从您的视频源捕获数据,然后为其他两个线程提供该数据。您可能需要查看互斥锁,以便两个线程不会相互冲突。
<强>资源强>
在SO和互联网上有很多问题可以帮助您实现这一目标: