Skip to content

Instantly share code, notes, and snippets.

@treeherder
Last active December 1, 2015 05:38
Show Gist options
  • Save treeherder/2888d80c1a85e4587950 to your computer and use it in GitHub Desktop.
Save treeherder/2888d80c1a85e4587950 to your computer and use it in GitHub Desktop.
attempt to display two camera feeds simultaneously
#!/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()
#!/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()
@treeherder
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment