【发布时间】:2021-06-24 21:23:45
【问题描述】:
我需要将灰度图像作为二进制数组传递给 python 中的 DLL。我正在使用 PIL 加载原始图像,将其转换为灰度,然后将像素复制到 c_char 数组。我的代码如下所示:
from ctypes import *
from PIL import Image
grayScale = Image.open(fileName).convert('L')
pixelMap = grayScale.load() #create the pixel map
pixel_array = c_char * (grayScale.height * grayScale.width)
pixels = pixel_array()
for y in range(grayScale.height):
i = y * grayScale.width
for x in range(grayScale.width):
pixels[i+x] = pixelMap[x,y]
'pixels' 然后作为 c_char_p 参数传递给需要它的 DLL。
这可行,但即使是中等大小的图像也很慢。不熟悉 PIL(或 Python),有没有比逐个像素更有效的方法来访问灰度数据?
【问题讨论】:
-
您为什么要删除所有显示您正在使用的模块的
import语句?为什么不分享你的图片?c_char的定义在哪里?谢谢。 -
这只是一个更大的程序的sn-p;我已经包含了相关的导入(c_char 来自 ctypes,旧版 DLL 的接口类型)。实际图像没有实际意义(打开图像并生成像素图就可以了)——我正在寻找一种更有效的方法来访问像素数据以将其复制到 c_char 数组中——我必须使用该类型来传递图像数据 DLL。
标签: python python-imaging-library imaging