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