简体   繁体   中英

Read webcam in python with multiprocessing

I have a simple program for reading webcams, but the reading results are very slow, so I lower the quality of reading images from the webcam, but the reading is still slow, so I try to use multiprocessing, so I'm testing a simple program to find out if my multiprocessing program is running correctly or not. but I don't know why the variable "cap" cannot be read. and I don't know how to solve it.

this is my program :

import cv2
import numpy as np
import multiprocessing

def get():
        global cap
        cap = cv2.VideoCapture(0)
        return cap

def video(cap):
        _, frame = cap.read()
        frame = cv2.flip(frame, 1)
        return frame

if __name__ == "__main__":
        p1 = multiprocessing.Process(target = get)
        p1.start()
        p1.join()

        while True:

                frame = video(cap)

                cv2.imshow("frame", frame)

                key = cv2.waitKey(1)
                if key == 27: #Key 'S'
                        break
 cv2.waitKey(0)
 cv2.destroyAllWindows() 

Actually, cap has never been declared. Try to insert this line after your import satements:

cap = None

This will take care of the missing cap. Of course this will then lead to other problems in your code, but it is a stating point.

Good luck

Andreas

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM