本格始動!
ここまでで環境構築は説明してきましたが、前回最後に書いたコードで動かなければ、何かがうまくいっていないので設定を見直しましょう。アイアンマンが好きなのでコードの名前はMark1,Mark2・・のように書いていきます。
Mark1 前回のコードの紹介
# include <opencv2/opencv.hpp>
# if _DEBUG
# pragma comment(lib,"opencv_world430d.lib")
# else
# pragma comment(lib,"opencv_world430.lib")
# endif
using namespace cv;
using namaspase std;
int main(void) {
Mat img = imread("C:\\opencv\\sources\\samples\\data\\lena.jpg");
imshow("View", img);
waitKey();
return 0;
}
解説①
c言語とc++言語の大きな違いの一つに名前空間という考えがあります。OpenCVも名前空間があり通常はOpenCVの関数の前にはcv::をつけます。僕は毎回書くのがめんどくさいので先にusing namespace cv;をつけて書かなくていいようにしています。
解説②
Mat imgでimgという箱を作ります。その箱の中にC:\opencv\sources\samples\data\lena.jpgのようなパスをimreadで読み込んで入れましょう。パスは¥一つだけだとエラーになるので¥¥と二つつけましょう。以下のように、先にimgを作ってもいいです。パスは必ず""の中に入れましょう。
Mat img;
img = imread("C:\\opencv\\sources\\samples\\data\\lena.jpg");
解説③
imshow("View", img);
これは画像を表示させる関数です。さっき作ったimgをViewという名前で表示させます。""の中の名前は何でもいいです。
解説③
waitKey();
これなしでも画像は表示されますが、一瞬で消えてしまいます。名前からわかると思いますが、何か起こるまで待つようにするためにあります。waitKey(10);のように()の中の数字を変えると表示時間を変えられます。
解説④
このように表示されると成功です。
Mark2 画像のサイズ変更
# include <opencv2/opencv.hpp>
# if _DEBUG
# pragma comment(lib,"opencv_world430d.lib")
# else
# pragma comment(lib,"opencv_world430.lib")
# endif
using namespace cv;
int main(void) {
Mat img = imread("C:\\opencv\\sources\\samples\\data\\lena.jpg");
resize(img, img, Size(), 0.5, 0.5);
imshow("View", img);
waitKey();
return 0;
}
解説①
resize(img, img, Size(), 0.5, 0.5);
さっきのコードに これを追加させるだけです。最初のimgは入力画像で二つ目のimgは出力画像です。Size()を入力した後、一つ目の0.5はx方向に0.5倍、二つ目はy方向に0.5倍します。つまり大きさを半分にできます。0.5の数字を変えると縦長や横長にもできるので試してください。
解説②
このようにこのように出てくればOKです。
最後に
あくまで自分のメモ帳として残しているので自分に分かりやすいように書いています。あほっぽい表現もあるかもしれませんがご了承ください。初心者向けですが、これが誰かの役に少しでもなればいいなと思います。(僕も最初かなりつまずいたので)