我正在尝试将使用PIL加载的 iamge 转换为 Cimg 图像对象。我知道 Cimg 是一个 c++ 库,而 PIL 是一个 python 成像库。给定一个图像 url,我的目标是计算图像的pHash,而不将其写入磁盘。pHash 模块与Cimg 图像对象一起使用,它已在 C++ 中实现。所以我打算使用 python 扩展绑定将所需的图像数据从我的 python 程序发送到 c++ 程序。在以下代码片段中,我从给定的 url 加载图像:
//python code sniplet
import PIL.Image as pil
file = StringIO(urlopen(url).read())
img = pil.open(file).convert("RGB")
我需要构建的 Cimg 图像对象如下所示:
CImg ( const t *const values,
const unsigned int size_x,
const unsigned int size_y = 1,
const unsigned int size_z = 1,
const unsigned int size_c = 1,
const bool is_shared = false
)
我可以使用 img.size 获取宽度(size_x)和高度(size_y),并将其传递给 c++。我不确定如何填写 Cimg 对象的“值”字段?使用什么样的数据结构将图像数据从 python 传递到 c++ 代码?
另外,还有其他方法可以将 PIL 图像转换为 Cimg 吗?