一、圖像二值化基本原理:
對灰度圖像進行處理,設定閾值,在閾值中的像素值將變為1(白色部分),閾值為的將變為0(黑色部分)。
二、圖像二值化處理步驟:
(1)先對彩色圖像進行灰度化
//img為原圖,imgGray為灰度圖
cvtColor(img, imgGray, CV_BGR2GRAY);
(2)對灰度圖進行二值化
//imgGray為灰度圖,result為二值圖像 //100~255為閾值,可以根據情況設定 //在閾值中的像素點將變為0(白色部分),閾值之外的像素將變為1(黑色部分)。
threshold(imgGray, result, 100, 255, CV_THRESH_BINARY)
三、demo
1 #include<iostream>
2 #include<opencv2\highgui\highgui.hpp>
3 #include<opencv2\core\core.hpp>
4 #include <opencv2\imgproc\imgproc.hpp>
5
6 using namespace std; 7 using namespace cv; 8
9 int main() 10 { 11 Mat img, imgGray,result; 12 img = imread("test.jpg"); 13 if (!img.data) { 14 cout << "Please input image path" << endl; 15 return 0; 16 } 17 imshow("原圖", img); 18 cvtColor(img, imgGray, CV_BGR2GRAY); 19 imshow("灰度圖", imgGray); 20 //blur(imgGray, imgGray, Size(3, 3));
21 threshold(imgGray, result, 100, 255, CV_THRESH_BINARY); 22 imshow("二值化后的圖", result); 23 imwrite("二值化的二維碼.jpg", result); 24 cout << "圖片已保存" << endl; 25 waitKey(); 26
27 return 0; 28 }