OpenCV バージョン 2.4 のサンプルプログラム
【サイト内の OpenCV 関連ページ】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール,画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCVとPythonを活用した画像・ビデオ処理プログラム: 別ページ »にまとめ
- OpenCV 4 の C/C++ プログラム: 別ページ »にまとめている.
【OpenCV の公式情報】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
画像ファイルの読み込みと表示
◆プログラムの例
- 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
◆ 実行結果の例
(OpenCV バージョン 2.4.9 で実行)
./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 の例
◆プログラムの例
- 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