作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處
double threshold( InputArray src, OutputArray dst,
double thresh, double maxval, int type );
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
using namespace cv;
using namespace std;
int main()
{
cv::Mat src = imread("test.jpg", 0);
cv::Mat th1,th2,th3,th4,th5;
// 最大類間差法,也稱大津算法
threshold(src, th1, 0, 255, THRESH_OTSU);
// 常規(guī)閾值分割法
threshold(src, th2, 100, 255, THRESH_BINARY);
// 截?cái)嚅撝捣指罘?threshold(src, th3, 80, 255, THRESH_TRUNC);
// 零化閾值分割法
threshold(src, th4, 100, 255, THRESH_TOZERO);
// 三角法
threshold(src, th5, 0, 255, THRESH_TRIANGLE);
imshow("original", src);
imshow("otsu", th1);
imshow("binary", th2);
imshow("trunc", th3);
imshow("zero", th4);
imshow("triangle", th5);
waitKey(0);
return 0;
}
? ? ? ?一般來說,opencv提供的閾值函數(shù)可以適用大多數(shù)場景,針對特殊場景,可以根據(jù)自身需求自行設(shè)計(jì)閾值算法。另外,大津算法針對圖像灰度接近的場景挺有效的,用其他算法可能無法精確分離;三角法在圖像對比度較大的場景比較好用,可以較好地識別出目標(biāo)區(qū)域,但是這個(gè)區(qū)域可能偏大些,一般配合邊緣漸變算法使邊緣平滑過渡~
? ? ? ?如果文章幫助到你了,可以點(diǎn)個(gè)贊讓我知道,我會很快樂~加油!
聯(lián)系客服