Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv2适用于线程,但不适用于进程_Python_Multithreading_Multiprocessing_Cv2 - Fatal编程技术网

Python cv2适用于线程,但不适用于进程

Python cv2适用于线程,但不适用于进程,python,multithreading,multiprocessing,cv2,Python,Multithreading,Multiprocessing,Cv2,大家好,谢谢你们的帮助。 我有这个功能来保存我的摄像头拍摄的视频帧 import cv2 import multiprocessing import threading def rec(): # Define the codec and create VideoWriter object fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi',fourcc, 20.0, (64

大家好,谢谢你们的帮助。 我有这个功能来保存我的摄像头拍摄的视频帧

import cv2
import multiprocessing
import threading
def rec():
    # Define the codec and create VideoWriter object
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret==True:
            out.write(frame)
        else:
            break

    # Release everything if job is finished
    cap.release()
    out.release()
    cv2.destroyAllWindows()
如果我将其与线程一起使用,并且与此代码一起使用,那么它工作得很好:

s1 = threading.Thread(target=rec)
s1.start()
但是如果我想使用下面的代码启动另一个进程,当我打开视频时,它只包含带有一些噪声的黑色帧

s1 = multiprocessing.Process(target=rec)
s1.start()
我到处找,但找不到任何解决办法


另外,我正在使用Python 3.6,在哪里定义了
cap
?尝试在多处理函数中定义它。如果它在父级中定义并从父级传递给子级,则它正在被pickle,这可能使它无法使用。

我解决了这个问题。
我在我的main和一个导入的模块中调用了
cap=cv2.VideoCapture(0)
,这是冲突的。我只调用了一次就解决了这个问题。

你是真的想用多个进程写入同一个文件,还是我看错了你的问题?你看错了:)我想要一个主进程的子进程来处理录制,而主进程做其他事情。我应该用子进程而不是多进程吗?我尝试过使用子进程与多重处理不同的是,我遇到了同样的问题。即使我在函数中定义了它,也无法工作。