新人をバイナリアンに育てる ~ その2 ~
サブタイトル:そら飛ぶ バイナリアン
このブログは 2011 年に新人教育をしたメールの断片から書きこおこしている。もう6年も前の話であることに注意。新人君(高橋くん - 仮名 - )は理工学系大卒のピカピカの新人。数学は得意で球の体積を積分で簡単に出せる。結構優秀。そして、学部では FORTRAN を学んでプログラミングもしたことがあるので、結構、できると信じて疑っていない。
そこで、GNU Development Tools という某所の自費出版本をよませて(それ以外の仕事はなし。勉強が仕事)自習させてみた。その記録である。
よくわからないけど、サブタイトルもつけてみた。どっかの出版社の人、本にしてください。:-)
新人くん日報:6/15 17:52
今日行ったこと
移行作業を終了させる。
GNU Development Tools第7章動的リンクを読み終える。
内容については完全に把握していないので読み直しが必要。
今後やるべきこと
GNU Development Tools を読み終える。
FreeBSDを導入する。
実務経験7~8年の人の日報
- 画像認識
- 顔認識のサンプルプログラムの、API レベルでやってることを把握
OpenCV は haar 分類器というものを持っており、
xml で与えられるパターン情報を元に、画像のパターン認識を行うことが出来る
パターンにヒットした箇所は座標で得られ、
テストでは座標をもとに赤い丸を書いている
テストに用いた顔の認識パターンは、正面を向いたもの、である
- エッジ検出のテストの修正
エッジ検出のテストでは、matrix を使って rotate していたが、必要無いことが分かった。`
利用するカメラの性質により、画像の左上を座標の起点とするか、左下を起点とするか分かれる
どちらを起点にするかは、取得した画像データ IplImage の持つ origin メンバにより取得出来るで、
もし origin が IPL_ORIGIN_BL ( 左下起点 ) の場合、cvFlip() という API で
上下の反転が可能であることがわかったため、テストを修正した
- OpenCV 2.2 と OpenCV 1.0 の違いをより明確に調査(特に、H/W アクセラレーションについて)
H/W アクセラレーション、正確には GPU の利用機能は、2.2 から導入された
対応する GPU は NDIVIA 製のもののみで、cuda ライブラリが必要となる
GPU を使うライブラリは、既存のソフトウェアで計算する API と別モノになっている
( DirectFB のように、API は一つで、API の中でソフトウェアを使うかハードウェアを使うか
処理が分岐するような設計にはなっていない)
GPU を使った HogDescriptor という画像検出器が、CPU による検出に比べ桁違いに高速らしい
リファレンスマニュアル:
http://opencv.jp/opencv-2svn/cpp/index.html
http://opencv.jp/opencv-2svn/cpp/gpu._gpu-based_functionality.html
ChangeLog:
http://opencv.jp/opencv2-x-tips/changelog_from_21
- IplImage 構造体の中身の調査
image_data, image_size をもとに、raw データをファイルに保存するテストを作った
社長から高橋君への指示 6/15(Wed) 22:50
次の事を達成してください。
72x34 の白黒画像イメージに四角を書く
PNG でセーブ
- OpenCV で次のプログラムを作る
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
PNG でセーブ
- OpenCV で次のプログラムを作る
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
白黒のraw データでセーブ(すでに実現しているのでそれをそのまま流用)
- 普通のプログラムで
白黒の raw データを読み込む
白の数と黒の数を数えて表示する。
- 普通のプログラムで
72x34 の白黒画像イメージに書いた四角を書く
raw データで書き出す
- 普通のプログラムで
72x34 の白黒画像イメージに書いた四角を書く
45度傾ける
raw データで書き出す
今月中にすべてこれができたら大したもの。
新人:高橋くん日報:6/16(Thu) 18:16
今日行ったこと
GNU Development Tools を読み終わる。
ただし、理解がまだまだ浅いと思われるのでこのまま2周目に移行。
VMware上でFreeBSDを導入した。
ただし設定が終わり切っていないため明日以降も行う予定。
これから行うべきこと
GNU Development Tools を読みつづける。
FreeBSDの設定。
OpenCVのインストール及びプログラム作成。
コメント
この日だけ 18:16 の報告になっている。実は 18:00 に帰るためには 17:30 には仕事を終了して、日報をかいて 17:50 に日報をメールして帰るように指示していた。ブラックでない会社。まぁ小さい会社、いいことばかりじゃないけどね。ここは私の方針で継続して働ける環境を作っている。(もちろんデスマーチもありました。それで会社がピンチになったことも)。この日はきっと本を読み切るためにちょっと遅くなったんだね。
GNU Development Tools 読み終わった!!1週間ちょっと?おー誰かが指示したのかな?このままで終わらせずに2周目に突入。まだ、よんだだけだからね。でも、新人だけに、出来る気になっている。
実務経験7~8年の人の日報
- 移植用 todo の更新
- qemu for ARM の環境をサーバ に作る
- arm 向け OpenCV 1.0.0 の build
- arm 向けに、グレースケール変換のテストをコンパイル
- qemu-arm 上でグレースケール変換のテスト
-> ok
- arm 向け OpenCV 2.2.0 の build
-> ok. 手順書を書いた
- arm 向けに、グレースケール変換のテストをコンパイル( 2.2.0 )
- qemu-arm 上でグレースケール変換のテスト( 2.2.0 )
-> ok
- qemu-arm 上でエッジ検出変換のテスト( 2.2.0 )
-> ok
- ARM のボードに、OpenCV 2.2.0 のライブラリをコピー
- ARM のボード上でエッジ検出変換のテスト
-> ok
高橋くんへ
マトリックスを使った回転をしているプログラムを添付します。