简单粗暴,直接上代码,本质就是将每一步都分成一个进程进行管理,如果是单纯的简单图像处理,这样其实没有必要,这里适合一个甚至多个深度学习模型同时运行时,还要进行图像处理的复杂耗时任务。
主体代码
import numpy as np
import cv2
from multiprocessing import Process, Queue
import time
import os
import sys
def cap_get(q):
n = 0
while 1:
n= n+1
process = 0
ret, frame = cap.read()
q.put([frame, data, process])
def show(q):
while 1:
frame, data, process = q.get()
cv2.imshow("frame", frame)
key = cv2.waitKey(1)
if key & 0xFF == ord('q') or key == 27:
cap.release()
cv2.destroyAllWindows()
sys.exit(0)
def draw(q):
while True:
frame, data, process = q.get()
print(n)
if __name__ == '__main__':
cap = cv2.VideoCapture(0)
q = Queue()
p = Process(target=cap_get, args=(q,))
p2 = Process(target=show, args=(q,))
p3 = Process(target=draw, args=(q,))
p.start()
p2.start()
p3.start()
show 进程
可以实时将进程cap_get 中的图像获取进行展示:
draw 进程
实时打印出当前的数据。
我也是全网找了半天,也没个进程间共享图像数据的文章。这个如果有帮助,希望给点个赞呀~
|