OpenCV バージョン 5 のサンプルプログラム
【概要】
OpenCV バージョン 5 の C++ API を用いた,画像の読み込みと表示,色変換,モルフォロジー演算(膨張・収縮・オープニング・クロージング)のサンプルプログラムを収録している.Linux での実行を前提としている.【目次】
【サイト内の関連情報】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール,画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCVとPythonを活用した画像・ビデオ処理プログラム: 別ページ »にまとめ
- OpenCV 5 の C/C++ プログラム: 別ページ »にまとめている.
【OpenCV の公式情報】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
画像ファイルの読み込みと表示
◆プログラムの例
- imread: 画像ファイルの読み込み
- namedWindow: ウインドウを開く
- imshow: ウインドウに画像を表示
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆ 実行結果の例
(OpenCV バージョン 5 で実行)
./a.out
カラー画像の濃淡画像への変換
◆プログラムの例
- cvtColor: 色空間における変換
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, gray;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, gray, COLOR_BGR2GRAY);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", gray );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆ 実行結果の例 (OpenCV バージョン 5 で実行)
./a.out
dilate, erode の例
◆プログラムの例
- dilate: 膨張処理(明るい領域を拡大)
- erode: 収縮処理(明るい領域を縮小)
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, hsv, hsv2, rgb2;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, hsv, COLOR_BGR2HSV);
dilate(hsv, hsv2, Mat(), Point(-1,-1), 8);
cvtColor(hsv2, rgb2, COLOR_HSV2BGR);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb2 );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆プログラムの例
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, hsv, hsv2, rgb2;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, hsv, COLOR_BGR2HSV);
erode(hsv, hsv2, Mat(), Point(-1,-1), 8);
cvtColor(hsv2, rgb2, COLOR_HSV2BGR);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb2 );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆プログラムの例
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, hsv, COLOR_BGR2HSV);
erode(hsv, hsv2, Mat(), Point(-1,-1), 8);
dilate(hsv2, hsv3, Mat(), Point(-1,-1), 8);
cvtColor(hsv3, rgb3, COLOR_HSV2BGR);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb3 );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆プログラムの例
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, hsv, COLOR_BGR2HSV);
dilate(hsv, hsv2, Mat(), Point(-1,-1), 8);
erode(hsv2, hsv3, Mat(), Point(-1,-1), 8);
cvtColor(hsv3, rgb3, COLOR_HSV2BGR);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb3 );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
Opening と Closing によるノイズ除去
◆プログラムの例
- morphologyEx: 構造要素を用いたモルフォロジー演算
#include<opencv2/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat rgb, hsv, hsv2, hsv3, rgb3;
rgb = imread( "fruits.jpg", IMREAD_COLOR );
cvtColor(rgb, hsv, COLOR_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, COLOR_HSV2BGR);
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", rgb3 );
waitKey(0);
return 0;
}
◆コンパイルコマンドの例
Linux の場合を示している.
g++ -std=c++17 -o a.out hoge.cc `pkg-config --cflags --libs opencv5`
◆ 実行結果の例 (OpenCV バージョン 5 で実行)
./a.out