微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 字节数组中创建灰度图像

如何解决在 python 字节数组中创建灰度图像

我需要将灰度图像作为二进制数组传递给 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),有没有比逐个像素更有效地访问灰度数据的方法

解决方法

经过更多挖掘,我找到了解决方案:

db.collection.aggregate([
  {
    $group: {
      _id: null,root: { $mergeObjects: "$$ROOT" }
    }
  },{ $replaceRoot: { newRoot: "$root" } }
])

.tobytes() 函数返回一个 Bytes 对象,该对象与 c_char 兼容(当作为参数传递给 DLL 时,使用指针,或 c_char_p,它与 Bytes 对象一起使用)。

请注意,这是一个不可变类型,对于我的用例来说很好(DLL 不会修改像素数据)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。