Last active
December 1, 2015 05:38
-
-
Save treeherder/2888d80c1a85e4587950 to your computer and use it in GitHub Desktop.
attempt to display two camera feeds simultaneously
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python import cv2 | |
import numpy as np | |
import cv2 | |
import multiprocessing as mp | |
class Eye(object): | |
def __init__(self, n): | |
self.n = n | |
self.cap = cv2.VideoCapture(self.n) | |
def cam_eye(self): | |
ret, frame = self.cap.read() | |
cv2.imshow("{0} camera {1}".format(mp.current_process.name, self.n),frame) | |
def close(self): | |
self.cap.release() | |
def worker(q): | |
obj = q.get() | |
obj.cam_eye() | |
if __name__ == '__main__': | |
queue = mp.Queue() | |
p = mp.Process(target=worker, args=(queue,)) | |
p.start() | |
queue.put(Eye(0)) | |
# Wait for the worker to finish | |
queue.close() | |
queue.join_thread() | |
p.join() | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python import cv2 | |
import numpy as np | |
import cv2 | |
class Eye(): | |
def __init__(self, n): | |
self.n = n | |
self.cap = cv2.VideoCapture(self.n) | |
def cam_eye(self): | |
ret, frame = self.cap.read() | |
cv2.imshow("{0}".format(self.n),frame) | |
def close(self): | |
self.cap.release() | |
if __name__ == "__main__": | |
left =Eye(0) | |
right=Eye(1) | |
while(True): | |
left.cam_eye() | |
right.cam_eye() | |
if cv2.waitKey(1) & 0xFF == ord('q'): | |
break | |
left.close() | |
right.close() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Traceback (most recent call last):
File "/usr/lib/python3.5/multiprocessing/queues.py", line 241, in _feed
obj = ForkingPickler.dumps(obj)
File "/usr/lib/python3.5/multiprocessing/reduction.py", line 50, in dumps
cls(buf, protocol).dump(obj)
_pickle.PicklingError: Can't pickle <class 'cv2.VideoCapture'>: it's not the same object as cv2.VideoCapture
^X^@^CTraceback (most recent call last):
File "m.py", line 34, in
Process Process-1:
p.join()
File "/usr/lib/python3.5/multiprocessing/process.py", line 121, in join
res = self._popen.wait(timeout)
File "/usr/lib/python3.5/multiprocessing/popen_fork.py", line 51, in wait
return self.poll(os.WNOHANG if timeout == 0.0 else 0)
File "/usr/lib/python3.5/multiprocessing/popen_fork.py", line 29, in poll
pid, sts = os.waitpid(self.pid, flag)
KeyboardInterrupt