3

MPIスキャッターを使用して、cv2ビデオキャプチャソースをさまざまなプロセスに送信しようとしました。そうすれば、各プロセスにフレームを取得するためのハンドルがあります。

if rank == 0:
  video_source = cv2.VideoCapture('my_video.avi')
  source_list = [video_source] * world_communicator.Get_size()
else:
  source_list = None
data = world_communicator.scatter(source_list, root=0)
# Do stuff with access to the video source...

ただし、このコードでは次のエラーが発生します。

[dfaux@ubiquitous mpi_practice]$ mpirun -n 2 python cv2_video_practice.py
Traceback (most recent call last):
  File "cv2_video_practice.py", line 93, in <module>
    process_video(source, destination, kernel)
  File "cv2_video_practice.py", line 58, in process_video
    data = comm.scatter(frame_counts, root=0)
  File "Comm.pyx", line 874, in mpi4py.MPI.Comm.scatter (src/mpi4py.MPI.c:68023)
  File "pickled.pxi", line 656, in mpi4py.MPI.PyMPI_scatter (src/mpi4py.MPI.c:32402)
  File "pickled.pxi", line 131, in mpi4py.MPI._p_Pickle.dumpv (src/mpi4py.MPI.c:26847)
  File "pickled.pxi", line 81, in mpi4py.MPI._p_Pickle.dump (src/mpi4py.MPI.c:26188)
cPickle.PicklingError: Can't pickle <type 'cv2.VideoCapture'>: it's not the same object as cv2.VideoCapture

ビデオソースを漬けられないのはなぜですか?なぜと<type 'cv2.VideoCapture'>同じオブジェクトではないのcv2.VideoCaptureですか?

4

1 に答える 1