linux下C++程序传递图像到PYTHON

因为工作原因需要将C++程序里面的图像传递到python,使用共享内存是最好的方法,这里参照网上较为完善的办法:https://www.cnblogs.com/gooutlook/p/14989599.html

改进

使用python的接收程序,速度很慢,接收720p的图像,大概只有不到2Hz。这速度太慢了,我之前用过socket发送,也没有这么慢,仔细看了一下代码,是读取图像数组慢,代码如下

    RecImg =  np.reshape(np.array(np.fromiter(pointer_img, dtype=np.uint8, count=size[0]*size[1]*size[2])) ,size)

np.reshape是数组变形,不会影响速度,np.array为创建数组,也不会太慢,
np.fromiter是从迭代器创建NumPy数组,这个迭代器一个个地添加uint8数据,最慢的在这里。

改写了一下

    data = ctypes.cast(pointer_img, ctypes.POINTER(date_type)).contents
    RecImg = np.frombuffer(data,dtype=np.uint8,count=-1).reshape(size)

速度起飞,0.05毫秒一张,下图为对比,上面是我优化过的代码获取一张图像需要的时间,下面是原来用迭代器获取一张图像需要的时间。
在这里插入图片描述
附上git地址,可以直接使用。
https://github.com/lizhuo1414/cpp_send_img_to_python.git

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值