linuxにOpenCv入れ終わったので、C++のサンプルをいじって簡単な動作確認をしてみる。
うちのLinuxVM環境にはデスクトップ入。れていないので、サンプルコードはアボートしてしまう。
(サンプルコードはウインドウ作ったりしているので、コマンドライン環境では動かせない。)
というわけで、ファイル入出力で簡単な動作確認。
OpenCvの関数を使って画像の拡大縮小
結果が分かりやすい画像の拡大縮小プログラムを書いてみる。
main関数の中身はこんな感じ。
if( (src = imread(filename,1)).data == 0 ) return -1; Size dst_size(320, 240); resize(src, dst, dst_size, 0, 0, INTER_LINEAR); imwrite("scaled.jpg", dst);
コンパイルするときはインクルードパスやライブラリパスを設定しないといけない。
自前で記述するのは面倒すぎるのでpkg-configでサクっと記述する。
gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` morphology2.cpp -o morphology2
このプログラムを実行すると、filenameで指定されたファイルを読み込み、scaled.jpgとして出力する。出力結果は必ず320x240に拡大縮小される。
とりあえずは拡大縮小できた。けど……。
これでうまく動いたけど、まだ課題はある。
アスペクト比を考慮していないので、入力画像のアスペクト比が4:3になっていないと、画像が引き伸ばされてしまう。
たとえば、opencvのsamples/cpp/baboon.jpgは512x512なのだが、これを上記で作成したプログラムに入力すると、アスペクト比が崩れて横長になって見えてしまう。
トリミングするなり、黒帯を入れるなりで対処しておく必要がある。
さて、今回はここまで。