1视频输出2功能

时间:2018-04-12 06:31:33

标签: python-3.x opencv

我是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()

当我运行代码时,它为我提供了两个运行相同视频的选项卡,一个用于绘制线条,另一个用于绘制矩形。如何让矩形和线条都在视频上并将功能分开,而不是将它们放在同一个功能中?

1 个答案:

答案 0 :(得分:2)

我无法用Python代码给你答案但是......

你所拥有的是两个不同的线程,既可以独立地从视频源中捕获数据,也可以在不同的数据上绘制元素。

您需要做的是让一个进程只负责从您的视频源捕获数据,然后为其他两个线程提供该数据。您可能需要查看互斥锁,以便两个线程不会相互冲突。

<强>资源

在SO和互联网上有很多问题可以帮助您实现这一目标: