首页 > 其他 > 详细

numpy中,从一片c_void_p指向的区域里获取数据

时间:2019-05-24 21:50:57      阅读:175      评论:0      收藏:0      [点我收藏+]

以前采用的数据拷贝的笨办法:

1 bitmap_size = (1080, 1920, 3)
2 buf = create_string_buffer(bitmap_size[0]*bitmap_size[1]*bitmap_size[2])
3 pointer_data = c_void_p(addressof(xxxx))
4 memmove(buf, pointer_data, bitmap_size[0]*bitmap_size[1]*bitmap_size[2])
5 #
6 np_arr = np.frombuffer(buf, dtype=np.uint8, count=bitmap_size[0]*bitmap_size[1]*bitmap_size[2])
7 np_arr = np_arr.reshape(bitmap_size)

现在找到了更好的办法,不用拷贝数据:

1 bitmap_size = (1080, 1920, 3)
2 bytes_count = bitmap_size[0]*bitmap_size[1]*bitmap_size[2]
3 pointer_data = c_void_p(addressof(xxxx))
4 #定义一个指向数组的指针
5 array_pointer = cast(pointer_data, POINTER(c_char*bytes_count)))
6 np_arr = np.frombuffer(buf, dtype=np.uint8, count=bytes_count)
7 np_arr = np_arr.reshape(bitmap_size)

 

numpy中,从一片c_void_p指向的区域里获取数据

原文:https://www.cnblogs.com/ahfuzhang/p/10920095.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!