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 を使用して width(size_x) と height(size_y) を取得し、C++ に渡すことができます。Cimg オブジェクトの「値」フィールドに入力する方法がわかりません。Python から C++ コードに画像データを渡すために使用するデータ構造はどのようなものですか?
また、PIL イメージを Cimg に変換する他の方法はありますか?