2値化
Openで扱う画像は,横軸x,縦軸yで,原点は左上,y軸は上から下方向である.
カラー画像は3チャンネル,モノクロ画像は1チャンネル(それぞれ8bit=256階調)
画像は,Mat型変数に読み込む.(名前空間に注意)
モノクロ画像の読み込み
Mat gray_img = imread("ファイル名.jpg",
0);
(画像のファイル形式により,拡張子はpng, jpg, bmpなどをとる)
カラー画像の読み込み
Mat color_img = imread("ファイル名.jpg", 1);
【画像2値化の例】
#include <pragma230.h>
#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 gray_img = imread("lena.jpg",
0);//モノクロで読み込む
if(gray_img.empty()) return -1;
// 固定の閾値処理
Mat bin_img;
// 入力画像,出力画像,閾値,maxVal,閾値処理手法
threshold(gray_img, bin_img, 150, 255,
THRESH_BINARY);
// 結果画像表示
namedWindow("Binary", WINDOW_AUTOSIZE);
imshow("Binary", bin_img);
waitKey(0);
}
画素値を閾値処理して,画像の2値化を行う.閾値処理の手法には,これを含めて以下のものがある:
詳細はマニュアル参照のこと.