作成したもの

 自作した作品を別ページにまとめることにしました。
よろしくお願いします。



Visual C++ 2010 Express レジストレーション登録した。

 先週金曜日、仕事中地震にあった。
 地震が収まった直後、44Fにあるオフィスから非常階段で歩いて避難しました。
日ごろの運動不足のため筋肉痛になってしまったことは後日談としてあるが、何とか帰宅することができた。帰宅途中、メイルのやりとりで家族や兄弟家族、実家の安否が確認とれたのでよかったが、家に帰って家族の顔を見た瞬間、こころの底からほっとした。
東北地方の方の中には、まだ、家族の安否が確認できない状態が続いているようだ。一刻も早く、安否確認がとれ、家族が対面できることを願います。
 家の中は、ひどい状況だった。皿も何枚か割れてしまった。レゴが置いてある部屋も。レゴを入れているケースがすべて落ちてしまった。ペンギンのブロックも壊れてしまった。豚の貯金箱は大丈夫だった。

地震から5日もたっているが相変わらず不安な状況です。ニュースを見てるとどうしてもネガティブな思考になりがちなので適度に情報をインプットし、普段どおりに生活することを心がけている。

さて、Visual C++を立ち上げたら、レジストレーション登録キーの取得を促された。
早速登録してみた。

オンラインで登録キーを取得するをクリックします。
送信者 201103

msdnのウェブサイトに飛びます。
私は、Windows Live IDがないので、新規登録します。
送信者 201103

メールアドレスを記入し、仮登録します。
送信者 201103

確認メールが届きます。
送信者 201103

受信したメールの本文に本登録用のリンク先がありますのでクリックします。
本登録の作業をします。
送信者 201103



本登録完了後、Windows Liveにログインし、製品登録キーを入手します。
送信者 201103

キーを入手後、レジストレーションすると、下記のようなメッセージがでます。

送信者 201103

あれ、Express版って90日間しか使えないのか、、、

OpenCVで白色検出する。

 いよいよ、OpenCVで色検出してみます。
Google先生にお伺いを立てると該当しているサイトを見つけました。


今回は、こちらのサイトにあったソースコードを使いました。

-----------------------------------------
OS:Windows XP
開発環境: Visual C++ 2010 Express
ライブラリ: OpenCV 2.2
-----------------------------------------

○赤色検出(1)

アルゴリズムは以下の通り。
----------
赤いピクセル(赤150以上、緑・青100以下の部分)を論理積で抽出する。
--------

ソースコードを丸ごとコピペし、プログラムをビルドしました。早速実行してみると、

現画像です。レゴとオセロ板を写しました。
送信者 201103

うーん、調整が必要ですね。
送信者 201103

デバッグコンソールはこんな感じです。
送信者 201103

○赤色検出(2)

2番目のアルゴリズムは以下の通り。
---------
「赤の要素が青・緑それぞれの1.5倍あり、さらに赤が100以上の値のピクセル」を赤とみなして抜き出す
--------------

送信者 201103

実行直後は、以下のようにいい感じに表示されるのですが、
送信者 201103

5−10秒くらいたつとやはり、赤色検出がうまくいきません。微調整が必要なのかな?
送信者 201103

○白色検出する。
サンプルプログラムを動作中にコンソール画面に表示されるパラメータを観測してみた。
すると、白のオセロ駒をカーソルに当てるとR=G=B=254になっている。黒の駒は、光りの加減で値が前後してしまう。
それなので、サンプルプログラム(1)のアルゴリズムを使って、白色駒を検出するプログラムを作成した。
R,G,Bとも220以上を論理積で抽出するようにした。

変更の内容は、以下の通り。

#if 0
      cvThreshold(imgR, imgThreshold_R, 150, 255, CV_THRESH_BINARY); // 赤が150以上
      cvThreshold(imgG, imgThreshold_G, 100, 255, CV_THRESH_BINARY_INV); // 緑が100以下
      cvThreshold(imgB, imgThreshold_B, 100, 255, CV_THRESH_BINARY_INV);
#else
      cvThreshold(imgR, imgThreshold_R, 220, 255, CV_THRESH_BINARY);
      cvThreshold(imgG, imgThreshold_G, 220, 255, CV_THRESH_BINARY);
      cvThreshold(imgB, imgThreshold_B, 220, 255, CV_THRESH_BINARY);
#endif

以下、実行画面です。
現画像です。
送信者 201103

おっ!いい感じに識別してくれてます。
送信者 201103

コンソール画面です。
送信者 201103

白色の識別ができるようになったので当初の目標の最低ラインを達成できました。

筑波山 梅まつりに行ってきました。

土曜日に筑波山の梅まつりに行ってきました。

使用したカメラは、Nikon D70です。
送信者 2011-03-06 筑波山 梅林

梅の花をアップで撮りました。
送信者 2011-03-06 筑波山 梅林

梅林からつくばを一望しました。
送信者 2011-03-06 筑波山 梅林

紅梅は、満開で、白梅は五分咲きでした。
桜もいいけど、梅もきれいですね。
送信者 2011-03-06 筑波山 梅林

別角度で。
送信者 2011-03-06 筑波山 梅林

梅林から、うっすらと富士山が見えました。
送信者 2011-03-06 筑波山 梅林
送信者 2011-03-06 筑波山 梅林
送信者 2011-03-06 筑波山 梅林

一眼レフカメラは、思った以上に撮影していて楽しいですね。

この後、筑波山 江戸屋にて、食事&ランチ&温泉につかって帰りました。

OpenCVでカメラの画像を取得する。

 ○USBカメラの接続確認
本題の前にUSBカメラのドライバをインストールしました。

バッファローコクヨサプライ製BSWK3K04Hを使いました。
送信者 201103

カメラをPCに接続する前にドライバをインストールします。
送信者 201103

送信者 201103

送信者 201103
ドライバのインストールでトラブルことはありませんでした。
続いてアプリケーションソフト、AMCAPをインストールします。
送信者 201103

送信者 201103
こちらもトラブルことはないでしょう。
インストール後、USBカメラを接続し、AMCAPを起動すると画像が出力されていることを確認します。
送信者 201103

○USBカメラの映像ファイルを出力するプログラムを作成する。
Googleで検索したところ、こちらのプログラムが使えそうなのでコピペしてビルドしました。
テンプレートは、OpenCVの動作確認で使用した環境を使いました。

-----------------------------------------
OS:Windows XP
開発環境: Visual C++ 2010 Express
ライブラリ: OpenCV 2.2
-----------------------------------------

エラーなくビルドを終えました。
ツールを起動するとAMCAPと同じように映像が出力されます。qキーを押すと終了します。


送信者 201103

初めてのOpenCVアプリ

 続いてOpenCVの動作確認をします。

環境:
OS:Windows XP
開発環境:Visual C++ 2010 Express
ライブラリ:OpenCV 2.2

参考サイト:
OpenCVで学ぶ画像認識
http://gihyo.jp/dev/feature/01/opencv/0002?page=2


新規プロジェクトをWin32コンソールアプリケーションを選択します。
送信者 201103

プリコンパイル済みヘッダーのチェックボックスを外します。
送信者 201103

○ヘッダーのパスを指定
参考サイトのOpenCVのバージョンが古いので注意が必要です。
下記のように指定します。
プロジェクト→プロパティを選択
構成プロパティを選択
構成をすべての構成に変更
C/C++を選択
追加のインクルードディレクトリに下記を設定
C:¥OpenCV2.2¥include;C:¥OpenCV2.2¥include¥opencv

*前回、インストール時、PATHを追加することを選択しましたが、この設定が有効に働かないようですのでフルパスしてしました。

送信者 201103

○ライブリーのパスを指定
リンカータブを選択
追加のライブラリディレクトリにC:¥OpenCV2.2¥libを記入。
送信者 201103
○依存ファイルを指定
構成をDebugに指定
リンカーを選択
入力を選択
追加の依存ファイルに下記を追加
opencv_core220d.lib;opencv_highgui220d.lib;opencv_video220d.lib;opencv_legacy220d.lib;opencv_imgproc220d.lib;opencv_objdetect220d.lib

○サンプルプログラムのビルド
OKボタンを押した後、参考サイトからサンプルプログラムをコピペします。
ビルドするとエラーなくプログラムが出来ます。
送信者 201103

C:¥OpenCV2.2¥samples¥c¥lena.jpgを実行プログラムと同じディレクトリにコピーします。
送信者 201103

実行ファイルを起動すると下記のように画像が表示されたら、OKです。
送信者 201103

○エッジ検出プログラム
参考サイトには、エッジ検出プログラムを紹介していますので動作確認してみました。
先ほど同じようにサンプルプログラムをコピペしてビルドするだけでOKです。
送信者 201103

○画像の幾何学変換プログラム
回転するプログラムも試しました。
送信者 201103

○顔検出プログラム
顔検出プログラムも試してみました。

やっぱりアニメは無理ですね。
送信者 201103

こちらも失敗。画像が荒いのかな?
送信者 201103

今話題のAKB48。ネットから画像を拝借しました。
たくさん検出しましたが、48人全て検出できませんでした。
送信者 201103