9
C++ / OpenCV 入入 入入入入 入ITS 入入入 D1 入入入入 2014/08/26

Cpp cv01

Embed Size (px)

DESCRIPTION

C++ / OpenCV の入門

Citation preview

Page 1: Cpp cv01

C++ / OpenCV 入門

熊本大学 胡( ITS)研究室D1 藤本賢志

2014/08/26

Page 2: Cpp cv01

Cから C++へ

最近では C++のサンプルを見ることが多くなったので、みんなで C++に入門しましょう

• C++のメリット–オブジェクト指向–記述がとても簡単になる–動的メモリの割り当てが自動( std::vectorなど)

–留学生のほとんどが C++を学んでいた

Page 3: Cpp cv01

プログラミング環境

• VC++ Express版で十分– Win7なら Visual C++  2010 Express– Win8以降の PCなら Visual Studio 2013–学生なら DreamSparkを使って購入しましょう

• OpenCV  2.4.9 (2014年 8月 26日最新 )–いまは CMakeする必要がなくなって超簡単

Page 4: Cpp cv01

画像の読み込み• 画像変数

– cv::Mat image;

• 画像サイズの表示– std::cout << "size: " << image.size().height << " , " <<

image.size().width << std::endl;

• 画像の読み込み– image = cv::imread("img.jpg");– if(!image.data){

//no image }

Page 5: Cpp cv01

画像処理• 画像反転

– cv::Mat result;– cv::flip(image, result, 1); //pos for horizontal //0 for vertical //neg for both

• 画像の表示– cv::namedWindow("Out");– cv::imshow("Out", result);

• matlabコードに似てますね

• 入力待ち– cv::waitKey(0);

Page 6: Cpp cv01

画像の保存、コピー• 画像の保存

– cv::imwrite("Out.bmp", result);

• cv::の省略ができる(プログラム上部に記述)– using namespace cv;

• 画像のコピー– cv::Mat image2, image3;– image2 = result; //同データになってしまう– result.copyTo(image3); //新しくコピー

Page 7: Cpp cv01

関数化

• 画像を作成する関数– cv::Mat func() { //320×240(w*h), 8bit, グレーで初期化 cv::Mat image(240, 320, CV_8U, cv::Scalar(100)); return image; }

• Mainから関数を呼ぶ– cv::Mat gray = func();

Page 8: Cpp cv01

画像の色変換

• RGB画像をグレー画像に変える– cv::Mat image(240, 320, CV_8UC3);– cv::Mat gray(240, 320, CV_8UC1);– cv::cvtColor(image, gray, CV_RGB2GRAY);

• CV_BGR2GRAY  • CV_GRAY2RGB  ・・・ 3チャンネル• CV_GRAY2BGRA ・・・ 4チャンネル

Page 9: Cpp cv01

参考文献

• VC++ Express– http://www.visualstudio.com/downloads/downl

oad-visual-studio-vs

• OpenCV– http://opencv.org/

• OpenCV2 Computer Vision Application Programming Cookbook– http://amzn.to/1pjWFe3