OpenCV-PHP拡張モジュールのアップデートのお知らせ
『OpenCV の PHP バインディングを書いてみた』から早 6 ヶ月も経過、すっかり本人が存在を忘れていた OpenCV-PHP バインディング。最近この日記のコメント欄で (おそらく) 海外のクレクレ君から「Windows 版の DLL くれ!俺はテンパってるんだ!」と言われて意外に有用かもしれないと思ったのと、つい先日『OpenCV プログラミングブック』が発売されたのもあってちょっと更新してみた。
- 作者: 奈良先端科学技術大学院大学 OpenCVプログラミングブック制作チーム
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2007/09/22
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 891回
- この商品を含むブログ (35件) を見る
更新された箇所は以下
- TSRM ビルドの修正 (Thanks to 某クレクレ君)
- cv_rect_seq_* 系の関数を廃止し、代わりに汎用的な cv_seq_* 系の API を提供。
- ちょっとしたメモリリークの修正
- シーケンス型の属性にアクセスできる cv_seq_attr_get() の追加
- 輪郭抽出関数 (cv_array_find_contours()) の追加。
cv_array_find_contours() のサンプルコード
<?php // 画像の読み込み $im = cv_image_load('test.jpg'); // グレースケールの画像を生成 $im_sz = cv_array_get_size($im); $gray_im = cv_image_create($im_sz[0], $im_sz[1], IPL_DEPTH_8U, 1); cv_array_convert_color($im, CV_BGR, $gray_im, CV_GRAY); // 2 値化 $tmp_img = cv_image_create_same($gray_im); cv_array_threshold($gray_im, $tmp_img, 192, 255, CV_THRESH_BINARY); // 輪郭を描画 $im = ImageCreateFromJpeg('test.jpg'); $orange = ImageColorAllocate($im, 255, 192, 0); $blue = ImageColorAllocate($im, 0, 0, 255); foreach (cv_array_find_contours($tmp_img) as $contour) { // rect 属性は多角形を含む最小の矩形を指定する $rect = cv_seq_attr_get($contour, "rect"); ImageRectangle($im, $rect['x'], $rect['y'], $rect['x'] + $rect['w'], $rect['y'] + $rect['h'], $orange); // ImagePolygon で描画できるようにデータ構造を変換 $points = array(); for ($i = 0; $i < cv_seq_count($contour); $i++) { $point = cv_seq_get($contour, $i); $points[] = $point['x']; $points[] = $point['y']; } ImagePolygon($im, $points, $i, $blue); } ImageJpeg($im, 'out.jpg'); ?>
ダウンロードは
http://www.voltex.jp/downloads/opencv-php-0.0RC1.tar.gz