OpenCV 2.2以降はpythonとのインタフェースが提供されているので、これを使って SageからOpenCVを使ってみます。
通常importするものはcvだけで良いのですが、ipl2npでcv2の関数を使っているので、 cv, cv2をimportします。
また、numpyは、npとしてimportして使用します。
|
SageでOpenCVのマトリックスを表示するには、IplImageからRGBの numpy arrayに変換する必要があります。
ipl2np関数を以下のように定義します。
|
OpenCVと言えば「顔検出」ということで、 OpenCVで顔検出 を参考にしながら、SageでLenaの顔の枠を表示してみましょう。
この例では、OpenCVをCから使用する1.0のインタフェースを使用しています。 「詳解OpenCV」も1.0のインタフェースを使用しているので本と照らし合わせながら試すには 1.0の方がよいと思います。
ほとんどコメントの通りですが、以下の処理を行っています。
facesの戻り値は、((x, y, width, height), 何かの値)のような形式で返されるので、 ここでは、「何かの値」をdummyとして処理しています。
[((217, 203, 169, 169), 24)] [((217, 203, 169, 169), 24)] |
検出された顔の位置をOpenCVのRectangleを使って矩形で表示します。
|
ipl2np関数を使ってnumpyの配列に変換し、matrix_plot関数を使って画像を表示します。
|
Cの場合には、メモリストレージやイメージを解放しますが、pythonインタフェースにはこれらを解放する 関数が見当たりません。
|