この記事は私が主催しているRobotVision勉強会の内容メモです。OpenCVの内容については下のサイトやOpenCV3.2.0のドキュメントを参考にしています。なお、開発環境はUbuntu16.04、OpenCV3.2.0です。
- http://opencvexamples.blogspot.com/p/learning-opencv-functions-step-by-step.html
初回なので開発環境のインストールと画像ファイルの読み込み、保存、表示について紹介します。
1.開発環境のインストール
2.ステップ
- (1). 画像を imread()で読み込む。
- (2). namedWindow()とimshow()を使いウインドウに表示する。
- (3). 必要があればimwrite()で画像をファイルに保存する。
- (4). キーボードのキーが押されるまで waitKey()で待つ。
3.画像の読み込み、表示、保存等のAPI
- Mat imread(const String& filename, int flags=IMREAD_COLOR )
- 機能:画像ファイルを読み込む
- 引数:
filename – 読み込まれるファイル名
flags –読み込まれる画像のカラータイプを指定- CV_LOAD_IMAGE_ANYDEPTH – 入力された色深度が16ビット/32ビットならその画像を返す。それ以外は色深度を8ビットに変換して返す。
- CV_LOAD_IMAGE_COLOR – カラー画像
- CV_LOAD_IMAGE_GRAYSCALE – グレースケール
- >0:3チャンネルのカラー画像を返す。αチャンネルが必要なら負の値を使うこと。
- =0:グレースケール画像を返す
- <0:読み込んだ画像をそのまま返す (alphaチャンネル付).
- bool imwrite(const String& filename, InputArray img, const vector<int>& params=vector<int>() )
- 機能:指定した画像にファイルを保存
- 引数:
- filename – ファイル名
- image – 保存される画像
- params –
フォーマット個別の保存パラメータ.詳細はここを参照。
- void imshow(const String& winname, InputArray mat)
- 機能:指定したウインドウに画像を表示
- 引数:
- winname – ウインドウの名前
- image – 表示される画像
- void namedWindow(const String& winname, int flags=WINDOW_AUTOSIZE )
- 機能:ウインドウの生成
- 引数:
- winname – ウインドウの名前
- flag – ウインドウのフラグ
- WINDOW_NORMAL :ユーザがウインドウをリサイズ可能 (制約なし).
- WINDOW_AUTOSIZE :表示された画像に合うようにウインドウが自動調整する。ユーザは手動でウインドウサイズを変更できない。
- WINDOW_OPENGL:ウインドウがOpenGLサポートで生成される。
- void destroyAllWindows()
- 機能:生成したウインドウを全て破壊する
- int waitKey(int delay=0)
- 機能:キーが押されるまでdelay[ms]待つ。delayが負の場合は無限に待つ。
- 戻り値:入力されたキー。キー入力が指定された時間ない場合は-1を返す。
4.サンプルコード
#include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> #include <iostream> int main(int argc, const char* argv[]) { // 画像データをファイルから読み込む cv::Mat src = cv::imread("~/src/opencv/samples/data/lena.jpg",cv::IMREAD_COLOR); // 画像の読み込みに失敗したらエラー終了する if(src.empty()) { std::cerr << "Failed to open image file." << std::endl; return -1; } cv::namedWindow("image", cv::WINDOW_AUTOSIZE); cv::imshow("image", src); cv::waitKey(0); cv::destroyAllWindows(); return 0; }
5.ビルド
- 方法1: 端末を開き、以下のコマンドを実行する。なお、先頭の$はコマンドプロンプトを表しているので打ち込まない。
$ g++ test.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
- 方法2
- (1) CMakeLists.txtを作る。
# cmake needs this line cmake_minimum_required(VERSION 2.8) # Define project name project(sample1) # Find OpenCV, you may need to set OpenCV_DIR variable # to the absolute path to the directory containing OpenCVConfig.cmake file # via the command line or GUI find_package(OpenCV REQUIRED) if(CMAKE_VERSION VERSION_LESS "2.8.11") # Add OpenCV headers location to your include paths include_directories(${OpenCV_INCLUDE_DIRS}) endif() # Declare the executable target built from your sources add_executable(sample1 sample1.cpp) # Link your application with OpenCV libraries target_link_libraries(sample1 ${OpenCV_LIBS})
(2) 以下のコマンドを実行する
$ cmake .
$ make
6.演習
- このサンプルプログラムを少し変更して、好きな画像を表示させよう!
以上
 
コメント