import multiprocessing import cv2 def cam_loop(namespace, event): cap = cv2.VideoCapture(0) while True: _ , img = cap.read() if img is not None: namespace.value = img event.set() def show_loop(the_q, event): cv2.namedWindow('pepe') while True: event.wait() from_queue = namespace.value cv2.imshow('pepe', from_queue) k = cv2.waitKey(1) if k == ord('q') or k == 27: break if __name__ == '__main__': logger = multiprocessing.log_to_stderr() logger.setLevel(multiprocessing.SUBDEBUG) mgr = multiprocessing.Manager() namespace = mgr.Namespace() event = multiprocessing.Event() cam_process = multiprocessing.Process(target=cam_loop,args=(namespace, event)) cam_process.start() show_process = multiprocessing.Process(target=show_loop,args=(namespace, event)) show_process.start() cam_process.join() show_process.join()
Difficult to say what is the performance compared with pipes or queues.
The cpu usage is high, 70+% if you sum up all processes, and I'm not even doing any image processing, nor gui.
I'm beginning to wonder if the multiprocessing via is going to be suitable for the core aspects of behave.
Next: bring Tkinter into this multiprocessing-opencv-webcam-capture scenario.
No comments:
Post a Comment