22:06:59)追加された行はこの色です。削除された行はこの色です。[#a6867452]-ディレクトリの変更,コンパイルなどLinuxの操作に慣れよう。**OPenCVサンプルプログラム[#ba4e5717]**OpenCVサンプルプログラム[#ba4e5717]-サンプルプログラムを動かしてみよう。-サンプルプログラムを改造してみよう。[#s79620c1]+[[ここからダウンロード。>http://www.er.ams.eng.osaka-u.ac.jp/kawai/AP2017/samples.zip]]+ダウンロードしたら適当な場所で解凍しましょう。+[[ここからダウンロード。>http://www.er.ams.eng.osaka-u.ac.jp/kawai/AP2018/samples.zip]]+ダウンロードしたらホームディレクトリに解凍しましょう。[#xacd0ff0]+ダウンロードしたディレクトリ中の.bash_profileをホームディレクトリにコピーします。~/+.bash_profileに書かれているコードを実行します。directoryのエラーが表示された場合は、上のsourceコマンドを再実行してください。[#z8cdd1cd]+samples/open_saveのディレクトリに移動し、以下のコマンドを実行し、コンパイルします。$make+コンパイルが通ったら、以下のコマンドを実行します。$./main+何かキーを押すとopen_saveのフォルダにJPG形式で読み込んだ画像を保存し、終了します(save_img.jpg)。+サンプルプログラムは全部で5種類あります(readme参照)。~他のサンプルプログラムも問題無く動くことを確認して下さい。+他のサンプルプログラムでは、コマンドライン引数で読み込む処理になっています。~コマンドライン引数で画像を指定する場合は以下のコマンドを実行します。../images/00.bmp+サンプルで読み込む画像はsamplesフォルダ内のimagesにあります。~別の画像を読み込んでみましょう。[#dbdff7d0]makeは、修正を加えたファイルの管理と、それらのファイルを再コンパイル・再リンクし、~実行可能ファイルを作成するための作業を簡略化するユーティリティです。~makeはMakefileに記述された指示に従って動作します。$makeと入力するだけでよくなります。~-I/***はヘッダファイルを探すディレクトリへのパス***を指定します。~~-l***はライブラリ***へリンクします。Makefileの中身を見てみると、コンパイルに必要な情報が書き込まれていることがわかります。~Makefileの中身を見てみると、コンパイルに必要な情報が書き込まれていることがわかります。~特に分割コンパイルやたくさんのライブラリを指定するときに、makeは有用なツールになりますので、~その文法など調べてみてください。[#y00da4dc]コマンドライン引数とは、main関数に渡す引数のことです。main(void)と括弧の中にvoidを書きます。~と括弧の中にvoidを書きます。*argv[])と書きます。*argv[]は引数の文字列を指すポインタの配列を表します。~argv[0]にはプログラム名が格納されます。~argv[1]以降には、実行時に入力した文字列が格納されます。~また、argcが表す引数の総個数にはプログラム名が含まれます。実行時に実行ファイル名の後にスペースを空けて文字列を入力します。"../images/00.bmp"となります。[#p0c9b99e]OpenCVにはたくさんの基本構造体があらかじめ定義されています。~もっともよく使う構造体が画像情報を格納するIplImage構造体です。}IplImage;cvLoadImageでロードされた画像の情報は、このIplImage構造体として格納されます。~画像がない場合はNULLが返り値として渡されます。[#p0c9b99e]OpenCVにはたくさんの基本クラスがあらかじめ定義されています。~もっともよく使うクラスが画像情報を格納するMatクラスです。};imread関数でロードされた画像の情報は、このMatクラスとして格納されます。~画像がない場合はdataメンバがfalseを返します。構造体のメンバにアクセスするには、アロー演算子を使います。img->widthクラスのメンバにアクセスするには、ドット演算子を使います。img.colsと記述します。[#if231266]+scanfを使って任意の画像を読み込めるようにしてみよう。+同様に,scanfを使って画像に処理を加えるパラメータ(スケール、切り取り位置、回転角度など)~を入力できるようにしてみよう。+resize.cppをscanfを使って任意の画像を読み込めるようにしてみよう。+同様に,scanfを使って画像に処理を加えるパラメータ(スケール)を入力できるようにしてみよう。~そのときに0以下や2以上の数値が入力された場合にエラーメッセージを表示して終了するようにしてください。0.5+画像ファイルの読み込み・保存--コマンドライン引数ではなく、ソフトの起動後でも任意のファイルを指定して読み込めるようにしてください。--下記の画像処理を施した画像を、任意のファイル名で保存できるようにしてください。+リサイズ--任意のスケールを指定してリサイズできるようにしてください。+切り取り--任意の位置とサイズを指定して画像の一部を切り取れるようにしてください。+反転--任意の軸(水平、垂直、両方)で反転できるようにしてください。+回転--任意の位置(x,y座標)、回転角度、スケールを指定して回転できるようにしてください。+その他--画像処理に関する機能を自分で実装してもよいです。[#q9c7dd3f]+画像ファイルの読み込み--実行後に画像を指定できるようにしてください。+画像処理--下記の処理からコマンドにより一つを選択できるようにし、それを実行してください。++リサイズ---任意のスケールを指定してリサイズできるようにしてください。++切り取り---任意のスケールを指定して画像の一部を切り取れるようにしてください。++反転---任意の軸(水平、垂直、両方)で反転できるようにしてください。++回転---任意の回転角度とスケールを指定して回転できるようにしてください。++その他---画像処理に関する機能を実装してください。+処理後の画像の表示と保存--任意のファイル名で処理画像を保存できるようにしてください。画像ファイルを指定してください。リサイズのスケールを入力してください。保存ファイル名を入力してください。[#m87b9752]-指定したファイルが存在しない、パラメータが足りない、異常なパラメータが指定されたなど、~処理が実行できない場合には、適切なエラーメッセージを表示してください。-適宜コメントを入れたり、関数化したりして、他人にもわかりやすいプログラムになるように心がけてください。~全くコメントのないものは減点します。-他人のプログラムを写したことが判明した場合は、両者とも0点になります。-課題内容に対応していないプログラムには点をつけられません。[#f58dd4aa]-第3回(4/26)の講義中に課題プログラムのコンパイルと実行が正しくできるかを確認します。-下記の提出物を第3回の講義日(4/26)の24:00までにCLEで提出してください。-第3回(4/25)の講義中に課題プログラムのコンパイルと実行が正しくできるかを確認します。-下記の提出物を第3回の講義日(4/25)の24:00までにCLEで提出してください。-提出物一式を入れるフォルダの名前は学生番号(ログインIDではない!)とし、zipファイルに圧縮してください。[#n398cb0b]-仕様を満たしているか。-ソースコードの可読性の高さ。--機能ごとに関数を分け、わかりやすい関数名をつけているか~(機能ごとにソースを分けて分割コンパイルをしてもよい)。--分かりやすい変数名をつけているか。--分かりやすいコメントを記述しているか。-機能に対応した分かりやすいコマンドであるか。-無駄な処理を行っていないか。-工夫に応じて加点します。