我想将使用PIL加载的图像转换为Cimg图像对象。我知道Cimg是一个C++库,PIL是一个python图像库。给定一个图像URL,我的目标是计算图像的pHash而不写入磁盘。 pHash模块与Cimg image object协同工作,并已在C++中实施。所以我打算将所需的图像数据从我的python程序发送到使用python扩展绑定的C++程序。在下面的代码sniplet,我从给定的URL加载图像:将使用PIL加载的图像转换为Cimg图像对象
//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
)
我可以得到的宽度(size_x )和高度(size_y)使用img.size并可以传递给C++。我不确定如何填充Cimg对象的“值”字段?用什么样的数据结构将图像数据从python传递到C++代码?
此外,是否有任何其他方式将PIL图像转换为Cimg?
感谢您的回复。我一直在尝试使用你提到的python扩展模块。我不确定要为图像数据传递什么。我的问题的第二部分是“我不确定如何填充Cimg对象的”值“字段”。我可以直接将我下载的图像数据直接用于Cimg结构中的'value'变量吗? – 2013-03-11 05:12:24