*index [#qa253e0e]
#contents

*第3回の趣旨 [#sa340a9e]
**OPenCVの機能の複合的利用[#ba4e5717]
-複数の関数を組み合わせて,より複雑な処理ができるようになろう。
**GUIに挑戦 [#rf2219f4]
-トラックバーやマウスイベントを取得し、画像処理ソフトの一部をGUIで操作できるようにしよう。

*サンプルの実行 [#hfbd9d25]
**サンプルプログラムのダウンロード [#s79620c1]
+[[ここからダウンロード。>http://www.er.ams.eng.osaka-u.ac.jp/kawai/AP2017/samples2.zip]]
+ダウンロードしたら適当な場所で解凍しましょう。

**サンプルプログラムを動かしてみよう [#z8cdd1cd]
+第1回と同様に、3つのサンプルプログラム(trackbar、mouse、change_pix)を動かしてみよう。
+change_pixでは、コマンドライン引数で画像を読み込みます。
 ./main ../images/00.bmp
+change_pixでは、imagesフォルダ内の別の画像も読み込んでみましょう。

*解説 [#r1c81636]
**cvCreateTrackbar関数 [#y19fa497]
トラックバーを作成して、指定されたウィンドウに追加する関数です。
 cvCreateTrackbar("Trackbar", "Window", 0, 100, on_trackbar);
では、ウィンドウ"Window"にトラックバー"Trackbar"(最大値100)を生成し、トラックバーに変化があるたびに、on_trackbar関数が呼び出されます。
on_trackbar関数
 on_trackbar(int val)
は、トラックバーの値を引数にしています。

**cvSetMouseCallback関数 [#g38e2d76]
マウスイベントに対するコールバックを指定する関数です。
 cvSetMouseCallback("Window", on_mouse);
では、ウィンドウ"Window"内でマウスイベント(クリックなど)が発生するたびに、on_mouse関数が呼び出されます。
on_mouse関数
 void on_mouse(int event, int x, int y, int flags, void *param = NULL)
は、マウスがどのような状態なのかを引数にしており、この値はcvSetMouseCallbackが設定します。~
 int x, y
は画像座標系におけるマウスポインタの座標。
 int event
はイベントの内容。例えば、マウスが移動しただと、eventの値がCV_EVENT_MOUSEMOVEになります。他にどのようなイベントがあるか、調べてみてください。

*練習2:画素値操作機能のGUI化 [#t019de18]
+画像を読み込む。
+トラックバーでR(赤)チャンネルの値の倍率を指定する。
+加工した画像を表示する。

*課題2:食べ物の写真を美味しそうに加工しよう! [#k6f696f0]
-自由な発想で料理写真を美味しく見せる画像処理を施し、保存してください。
-GUIを使って、プログラム実行中にパラメータを変更できるなどの工夫があると大幅に加点します。

**注意事項 [#m87b9752]
-指定したファイルが存在しない、パラメータが足りない、異常なパラメータが指定されたなど、処理が実行できない場合には、適切なエラーメッセージを表示してください。
-適宜コメントを入れたり、関数化したりして、他人にもわかりやすいプログラムになるように心がけてください。全くコメントのないものは減点します。
-他人のプログラムを写したことが判明した場合は、両者とも0点になります。
-課題内容に対応していないプログラムには点をつけられません。

**提出方法 [#f58dd4aa]
-第5回(5/17)の講義中に課題プログラムのコンパイルと実行が正しくできるかを確認します。
--その場で,新しい料理画像の加工画像を作ってもらいます。
-下記の提出物を第5回の講義日(5/17)24:00までにCLEで提出してください。
--提出物一式を入れるフォルダの名前は学生番号(ログインIDではない!)として,zipファイルに圧縮してください。
-提出物
--ソースコード
--コンパイルに使用するMakefile
--作成したソフトの仕様や実行方法等を記載したReadme.txt
--加工前後の画像
--その他,コンパイル・実行に必要なファイル

**評価方法 [#n398cb0b]
-仕様を満たしているか。
-ソースコードの可読性の高さ。
--機能ごとに関数を分け、わかりやすい関数名をつけているか(機能ごとにソースを分けて分割コンパイルをしてもよいです)。
--わかりやすい変数名をつけているか。
--わかりやすいコメントを記述しているか。
-機能に対応した分かりやすいコマンドであるか。
-無駄な処理を行っていないか。
-工夫に応じて加点します。

*参考になるサイト [#r68ab4cb]
-OpenCVライブラリに関する日本語リファレンスマニュアル~
[[OpenCV v1.0.0リファレンスマニュアル>http://opencv.jp/opencv-1.0.0/document/]]~
-自宅のPCで課題をやりたい場合~
[[BYODで情報教育端末の仮想デスクトップを使用する]]~
-こちらの方法でも自宅のPCで課題を進めることができます~
[[Vine Linux on VMware Player]]~

*質問がある場合 [#c4e4f38c]
-中西研 大西までメールをください。~
なお、件名は「AP2017:課題2」としてください。~
yuya.onishi_AT_ams.eng.osaka-u.ac.jp (_AT_は@に変えてください)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS