Преобразование изображения, загруженного с использованием PIL, в объект изображения Cimg

Я пытаюсь конвертировать iamge, загруженный с помощью PIL к объекту изображения Cimg. Я понимаю, что Cimg — это библиотека c ++, а PIL — это библиотека изображений Python. Учитывая URL изображения, моя цель состоит в том, чтобы вычислить pHash изображения без записи его на диск. Модуль pHash работает с Cimg изображение объекта и это было реализовано в C ++. Поэтому я планирую отправить необходимые данные изображений из моей программы на Python в программу c ++, используя привязку расширений Python. В следующем фрагменте кода я загружаю изображение с данного 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
)

Я могу получить ширину (size_x) и высоту (size_y) с помощью img.size и могу передать его в C ++. Я не уверен, как заполнить поле «значения» объекта Cimg? Какую структуру данных использовать для передачи данных изображения из Python в код C ++?

Кроме того, есть ли другой способ конвертировать изображение PIL в Cimg?

5

Решение

Я предполагаю, что ваше основное приложение написано на Python, и вы хотите вызывать код C ++ из Python. Вы можете достичь этого, создав «Модуль Python«, который предоставит Python всю нативную функциональность C / C ++. Вы можете использовать такой инструмент, как SWIG, чтобы упростить вашу работу.

Это лучшее решение вашей проблемы, которое пришло мне в голову.

0

Другие решения

Других решений пока нет …