読者です 読者をやめる 読者になる 読者になる

catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

OpenCvで画像の拡大縮小

linuxOpenCv入れ終わったので、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なのだが、これを上記で作成したプログラムに入力すると、アスペクト比が崩れて横長になって見えてしまう。

トリミングするなり、黒帯を入れるなりで対処しておく必要がある。

 

さて、今回はここまで。