threshold()
?
一、threshold()函數
1.1 threshold()函數各參數詳解
double threshold(InputArray src,OutputArray dst,double thresh,double maxval,int type)?? 第一個參數,InputArray類型的src,輸入數組,填單通道 , 8或32位浮點類型的Mat即可。
?? 第二個參數,OutputArray類型的dst,函數調用后的運算結果存在這里,即這個參數用于存放輸出結果,且和第一個參數中的Mat變量有一樣的尺寸和類型。
?? 第三個參數,double類型的thresh,閾值的具體值。
?? 第四個參數,double類型的maxval,當第五個參數閾值類型type取 THRESH_BINARY 或THRESH_BINARY_INV閾值類型時的最大值.
?? 第五個參數,int類型的type,閾值類型。
第五參數有以下幾種類型
0: THRESH_BINARY? 當前點值大于閾值時,取Maxval,也就是第四個參數,下面再不說明,否則設置為0
1: THRESH_BINARY_INV 當前點值大于閾值時,設置為0,否則設置為Maxval
2: THRESH_TRUNC 當前點值大于閾值時,設置為閾值,否則不改變
3: THRESH_TOZERO 當前點值大于閾值時,不改變,否則設置為0
4:THRESH_TOZERO_INV? 當前點值大于閾值時,設置為0,否則不改變
?
1.2調用示例?
Mat ScrImage, OutImage, OutImage1, OutImage2, OutImage3;ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");threshold(ScrImage, OutImage1, 200, 255, CV_THRESH_BINARY);//固定閾值分割imshow("【固定閾值處理:二值化】", OutImage1);?
二、adapativeThreshold()函數
2.1 adapativeThreshold()函數各參數詳解
void cvAdaptiveThreshold(constCvArr* src,CvArr* dst,double max_value,int adaptive_method =CV_ADAPTIVE_THRESH_MEAN_C,int threshold_type =CV_THRESH_BINARY,int block_size = 3,double param1= 5);?? src 輸入圖像.
?? dst 輸出圖像.
?? max_value使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV的最大值.
?? adaptive_method自適應閾值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C (見討論).
?? threshold_type
?? 取閾值類型:必須是下者之一
CV_THRESH_BINARY,
CV_THRESH_BINARY_INV
block_size用來計算閾值的象素鄰域大小: 3, 5, 7,...
param1與方法有關的參數。對方法CV_ADAPTIVE_THRESH_MEAN_C 和CV_ADAPTIVE_THRESH_GAUSSIAN_C, 它是一個從均值或加權均值提取的常數(見討論), 盡管它可以是負數。
?
2.2調用示例?
Mat ScrImage, OutImage, OutImage1, OutImage2, OutImage3;ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");adaptiveThreshold(ScrImage, OutImage2, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 31, 10);//自適應閾值分割imshow("【自動閾值處理:二值化】", OutImage2);?
三、完整程序
#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/opencv.hpp>#include <vector>#include <cstdio>using namespacestd;using namespacecv;int main(){Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2,OutImage3, OutImage4, OutImage5, OutImage6, OutImage7, OutImage8, OutImage9;ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg",0); //讀入圖像 \\image1.jpg brownbug.jpg whitebug.jpgimshow("【原圖】", ScrImage);threshold(ScrImage,OutImage1, 200, 255, CV_THRESH_BINARY);//固定閾值分割adaptiveThreshold(ScrImage,OutImage2, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 31, 10);//自適應閾值分割imshow("【固定閾值處理:二值化】", OutImage1);imshow("【自動閾值處理:二值化】", OutImage2);waitKey(0);return NULL;}?
總結
以上是生活随笔為你收集整理的threshold()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV cvtColor()函数
- 下一篇: OpenCV imread()函数