python多处理中的数组到cv2框架

时间:2019-07-15 06:36:47

标签: python numpy python-multiprocessing numpy-ndarray python-gstreamer

我有gstreamer缓冲区,喜欢在python多处理中转换为cv2帧

Gstreamer在一个进程中从相机获取缓冲区,然后使用Multprocessing.Array

将缓冲区传递给另一个进程
Gstreamer gets buffer in one process as
    processing=Multiprocess.process(target=imageprocess, args=(sharedarray,))
    sharedarray=Array['d',6220800,dtype=np.uint8]
    sample = sink.emit("pull_sample")
    buf=sample.get_buffer()
    sharedarray=np.frombuffer(buffer=buf.extract_dup(0,buf.get_size()),dtype=np.uint8)

我检查了一下,共享数组的长度为6220800。

然后在另一个过程中

def imageprocess(img):
    image=np.frombuffer(img,dtype=np.uint8)
    cv2.imshow('image ', image.reshape(1080,1920,3))

如果我将dtype = np.uint8设置为 无法将大小为49766400的数组重塑为形状(1080,1920,3)。

如果我设置dtype = np.float64,但我的图像是黑色的,则没有错误。

在此问题中如何获得正确的图像? 我可以在cv2中将图像类型从double转换为char,但是想知道为什么源包含uint8和np。frombuffer无法直接检索uint8。

0 个答案:

没有答案