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
