在C / C ++和Python之间共享内存
问题内容:
有没有一种共享内存的方法来在C / C 和python之间共享一个openCV图像(C
+中的MAT和python中的numpy)?不需要多平台,我在linux中做,我想过mmap或类似想法之间的共享。
我有两个正在运行的进程,一个是用C编写的,另一个是python,我需要在它们之间共享一个映像。
我将通过套接字从c进程调用python,但是我需要通过内存发送和映像。
另一种选择是将其写入内存文件,不确定是否会更耗时。
问题答案:
好的,这并不是真正意义上的内存共享。IPC需要将图像数据从一个进程发送到另一个进程。
我建议您使用Unix命名管道。您将必须以C / C
++的字符串格式获取原始数据,通过管道或Unix套接字将其发送到Python,然后从发送的数据中获取一个numpy数组。也许使用np.fromstring()函数。
不用担心速度,管道非常快。本地和Unix套接字也是如此。在获取字符串表示形式并将其返回矩阵时,大多数时间将被浪费。
您可能会创建真正的共享内存空间,并将C / C
++中的OpenCV中的数据直接导入Python,然后在Python中使用OpenCV来获取numpy数组,但这很复杂。如果您不需要光速,最好的选择就是管道。