OpenCV學習心得 7 閾值處理

2021-06-05 04:30:16 字數 2292 閱讀 1650

轉載請註明出處與作者

opencv提供了2個函式來處理閾值.

第乙個函式

double threshold(inputarray src, outputarray dst, double thresh, double maxval, int thresholdtype);

這個函式是使用乙個固定的值thresh來分割區間的.可以用來得到2值圖或者濾除雜訊.或者濾除一些很小或很大的值.

thresholdtype有幾種型別可以選擇:

thresh_binary 當src(x,y)>thresh時填充maxval,否則填充0;

thresh_binary_inv  當src(x,y)>thresh時填充0,否則填充maxval;

thresh_tozero 當src(x,y)>thresh時保留原值,否則填充0;

thresh_tozero_inv  當src(x,y)>thresh時填充0,否則保留原值;

thresh_trunc和thresh_otsu還沒有研究...待以後補充...

第二個函式,自動閾值

void adaptivethreshold(inputarray src, outputarray dst, double maxvalue, int adaptivemethod,int thresholdtype, int blocksize, double c)

這個函式會根據條件對每乙個點都計算出乙個值,然後根據這個值來判斷最終要填充什麼值.

thresholdtype有2個值可以選擇

thresh_binary 當計算出的值》thresh時填充maxval,否則填充0;

thresh_binary_inv  當計算出的值》thresh時填充0,否則填充maxval;

adaptivemethod有2個值可以選擇

adaptive_thresh_mean_c 使用平均加權的方式計算

adaptive_thresh_gaussian_c 使用高斯函式進行計算.

引數c是乙個數值,由adaptivemethod方式計算出來的值要減去c才能得到最終的值.這個最終的值就是用來判斷要填充什麼值的.所以我們可以將這個值當做乙個偏移量來使用.

引數blocksize表示計算的時候使用的矩陣大小,此引數必須是大於1的奇數,例如3,5,7....

類中的程式碼:

//!閾值: 將影象轉換為高對比度的黑白影象.此函式針對roi進行處理.必須為單通道影象

//!invert為false時,大於thresh的值轉換為maxval,小於等於thresh的值轉換為0.invert為true時,大於thresh的值轉換為0,小於等於thresh的值轉換為maxval.

bool threshold(double thresh,double maxval,bool invert=false);

//!invert為false時,大於thresh的值保留原值,小於等於thresh的值轉換為0.invert為true時,大於thresh的值轉換為0,小於等於thresh的值保留原值.

bool threshold(double thresh,bool invert=false);

//!自適應閾值:以每乙個點為中心取blocksize大小的矩陣,矩陣中的值求均值再減去valoffset得到乙個最終的值,如果原值大於這個最終的值則填充maxval,否則填充0.

//!invert為false時,大於最終值則填充maxval,小於等於最終值則填充0.invert為true時,大於最終值則填充0,小於等於最終值則填充maxval.

//!usegaussionmode 為true的時候計算均值使用高斯函式進行計算,為false的時候使用平均加權法進行計算.

//!blocksize: 為大於1的奇數,如3,5,7,....

bool adaptivethreshold(double maxval,int blocksize,double valoffset, bool usegaussionmode=false,bool invert=false);

bool copencvimage::threshold(double thresh,double maxval,bool invert)

bool copencvimage::threshold(double thresh,bool invert)

bool copencvimage::adaptivethreshold(double maxval,int blocksize,double valoffset, bool usegaussionmode,bool invert)

opencv心得體會 opencv學習心得第一章

背景介紹 opencv是專門用於影象處理的機器視覺庫,python是用於快速開發的輕量級語言。opencv提供的介面可以讓python輕鬆的對這個機器視覺庫進行操作,進行影象處理。opencv中的gui特性 開發環境為linux的ubuntu使用的語言為python 1 影象的基本操作 首先我們先學...

opencv學習記錄之閾值處理

閾值處理是指將影象內高於一定值或者低於一定值的畫素點進行處理 函式形式為 retval dst cv2.thresshold src thresh maxval type retval代表返回的閾值 dst代表閾值分割結果影象,與原始影象有相同的大小和型別 src代表要進行分割的影象,可以是多通道的...

OpenCV 閾值處理 二 自適應閾值

因此在同一副影象上的不同區域採用的是不同的閾值,從而使我們能在亮度不同的情況下得到更好的結果。自適應閾值函式 dst cv.adaptivethreshold src,maxvalue,adaptivemethod,thresholdtype,blocksize,c dst 引數 src 8位單通道...