pybind11で既存のC++ライブラリのPythonバインディングを作った話
この記事は,Qiitaの「Python Advent Calendar 2019」の12日目の記事です. 技術ブログをQiitaからこっちに移してから初めてのAdvent Calendar参加です.
モチベーション
近年のPythonを取り巻くコミュニティの発展により,Pythonから利用可能なパッケージが非常に多く開発されている. OpenCVやMATLABといった老舗のライブラリや言語もPythonとのインタフェースを備えるようになってきている. C++とPythonの間を繋ぐ方法のひとつとして,pybind11というライブラリが知られている.
pybind11を用いることで,C++のコードを書くだけでPythonのモジュールを作ることができる. さらに,自分で開発したライブラリだけでなく,既存のC++製のライブラリをpybind11でラップすることで 自分のPythonのパッケージの一部として取り込むことも可能である.
本稿では,pybind11を用いてC++のライブラリをPythonに取り込むまでの流れを
自分が作ったpylibfacedetection
を例に述べる.
これはC++で書かれた人の顔検出ライブラリであるlibfacedetectionのPythonバインディングである.