ctypes和指针操作
我正在处理图像数据,想要在图像的某几行中访问数据,以便用一个C语言的库进行分析。我在Python中使用create_string_buffer创建了一个8位像素的缓冲区。请问有没有办法在不重新创建新缓冲区的情况下,获取到这个缓冲区内某个位置的指针?我的目标是能够分块分析和修改这个缓冲区中的数据,而不需要频繁地创建缓冲区和复制数据。
在这种情况下,最终是C语言库在处理这个缓冲区,所以我实际上不需要用Python去改变缓冲区里的值。我只需要让我的C函数能够访问到缓冲区中的数据就可以了。
2 个回答
0
你也可以使用 ctypes.cast(buf, ctypes.c_void_p)
这个方法。
8
create_string_buffer 是一个可以让你创建 ctypes 对象(也就是一组字符的数组)的方法,然后使用 byref,我来给你引用一下它的说明:
这个方法返回一个轻量级的指针,指向 obj,这个 obj 必须是 ctypes 类型的实例。offset 默认是零,必须是一个整数,这个整数会加到内部指针的值上。
从 2.6 版本开始,offset
这个参数才被加入,所以如果你用的是更老的版本,那你可能需要做更多的工作。