OpenCV バージョン 2.4 のサンプルプログラム
OpenCV (Open Computer Vision Library) は, 実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.
【サイト内の関連ページ】
- OpenCV, OpenCV Contrib 4.10 のインストール,NVIDIA CUDA 対応可能(ソースコードを用いたインストール)(Windows 上)
- OpenCV, opencv_contrib,Python の opencv-python パッケージのインストール(Ubuntu 上)
- OpenCV, OpenCV Contrib のインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)
* 参考 Web ページ: https://opencv.org
画像ファイルの読み込みと表示
◆プログラムの例
- imread: 画像ファイルの読み込み
- namedWindow: ウインドウを開く
- imshow: ウインドウに画像を表示
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_core
./a.out

カラー画像の濃淡画像への変換
◆プログラムの例
- cvtColor: 色空間における変換
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, gray; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, gray, CV_BGR2GRAY); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", gray ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)
./a.out

dilate, erode の例
◆プログラムの例
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, hsv, hsv2, rgb2; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, hsv, CV_BGR2HSV); dilate(hsv, hsv2, Mat(), Point(-1,-1), 8); cvtColor(hsv2, rgb2, CV_HSV2BGR); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb2 ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
◆プログラムの例
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, hsv, hsv2, rgb2; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, hsv, CV_BGR2HSV); erode(hsv, hsv2, Mat(), Point(-1,-1), 8); cvtColor(hsv2, rgb2, CV_HSV2BGR); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb2 ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
◆プログラムの例
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, hsv, CV_BGR2HSV); erode(hsv, hsv2, Mat(), Point(-1,-1), 8); dilate(hsv2, hsv3, Mat(), Point(-1,-1), 8); cvtColor(hsv3, rgb3, CV_HSV2BGR); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb3 ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
◆プログラムの例
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, hsv, CV_BGR2HSV); dilate(hsv, hsv2, Mat(), Point(-1,-1), 8); erode(hsv2, hsv3, Mat(), Point(-1,-1), 8); cvtColor(hsv3, rgb3, CV_HSV2BGR); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb3 ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
Opening と Closing によるノイズ除去
◆プログラムの例
- morphologyEx: 構造要素を用いたモルフォロジー演算
#include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main( int argc, char** argv ) { Mat rgb, hsv, hsv2, hsv3, rgb3; rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 ); cvtColor(rgb, hsv, CV_BGR2HSV); morphologyEx(hsv, hsv2, MORPH_OPEN, getStructuringElement(MORPH_ELLIPSE, Size(8, 8) ) ) ; morphologyEx(hsv2, hsv3, MORPH_CLOSE, getStructuringElement(MORPH_ELLIPSE, Size(8, 8) ) ) ; cvtColor(hsv3, rgb3, CV_HSV2BGR); namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO ); imshow( "Display Image", rgb3 ); waitKey(0); return 0; }
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core
◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)
./a.out
