python - 使用多处理在 python 中读取网络摄像头

标签 python opencv python-multiprocessing video-capture

我有一个简单的读取网络摄像头的程序,但是读取结果很慢,所以我降低了从网络摄像头读取图像的质量,但读取仍然很慢,所以我尝试使用多处理,所以我测试一个简单的程序,看看我的多处理程序是否正常运行。但我不知道为什么无法读取变量“cap”。而且我不知道如何解决。

这是我的程序:

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() 

最佳答案

实际上,cap 从未声明过。尝试在您的导入语句之后插入此行:

cap = None

这将解决丢失的上限。当然,这会导致您的代码出现其他问题,但这是一个陈述点。

祝你好运

安德烈亚斯

关于python - 使用多处理在 python 中读取网络摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59960938/

相关文章:

python - Sphinx 类属性文档

NLTK word_tokenizer 的 Python 多重处理 - 函数永远不会完成

python - 使用 Python 多处理无法将 LDAP 对象共享给子进程

python - 为什么 skimage.io.imsave 和 opencv.VideoWriter 之间的颜色不同

opencv - 矩阵OpenCV的大小

c++ - 如何在 C++ 中的单独 posix 线程中运行 OpenCV Videocapture 以实现跨平台?

nose - 在并行 python 中运行测试用例

python - 将一列列表拆分为不同的列时出错

python - 如何使用 PyQT5 附加和分离外部应用程序或停靠外部应用程序?

python - 通过比较两个不同形状的 Numpy 数组的值来计算掩码