cvThreshold函式使用與注意事項

2021-07-11 05:33:36 字數 1853 閱讀 6412

cvthreshold是opencv庫中的乙個函式。作用:函式 cvthreshold 對單通道陣列應用固定閾值操作。該函式的典型應用是對灰度影象進行閾值操作得到二值影象。(cvcmps 也可以達到此目的) 或者是去掉雜訊,例如過濾很小或很大象素值的影象點。本函式支援的對影象取閾值的方法由 threshold_type 確定。

形式:void cvthreshold( const cvarr* src, cvarr* dst, double threshold, double max_value, int threshold_type );

src:原始陣列 (單通道 , 8-bit of 32-bit 浮點數)。

dst:輸出陣列,必須與 src 的型別一致,或者為 8-bit。

threshold:閾值

max_value:使用 cv_thresh_binary 和 cv_thresh_binary_inv 的最大值。

threshold_type:閾值型別 threshold_type=cv_thresh_binary:

如果 src(x,y)>threshold ,dst(x,y) = max_value; 否則,des(x,y)=0;

threshold_type=cv_thresh_binary_inv:

如果 src(x,y)>threshold,dst(x,y) = 0; 否則,dst(x,y) = max_value.

threshold_typ

在這裡一定要注意dst必須是單通道的影象,本人之前寫成3通道影象,一直出錯,檢查了好久才發現問題所在。這說明還是要細心。

/----------------------重要**----------------/

//分別複製每個通道到多個單通道影象

cvsplit(img,r,g,b,null);

//temporary storage

iplimage* s= cvcreateimage(cvgetsize(img),ipl_depth_8u,1);

//計算兩兩陣列加權值的和

cvaddweighted(r,1./3. ,g, 1./3. ,0.0, s);

cvaddweighted(s, 2./3., b, 1./3., 0.0,s);

cvthreshold(s,img1,100,255,cv_thresh_binary);

//cvshowimage("b",img1);

cvwaitkey(1000);

cvreleaseimage(&r);

cvreleaseimage(&g);

cvreleaseimage(&b);

cvreleaseimage(&s);

cvshowimage("b",img1);

//效果圖

本文出自 「入乎其內出乎其外」 部落格,請務必保留此出處

函式 使用函式指標操作函式

設計乙個名為calculate 的函式,他接受兩個double 值和乙個指向函式的指標,而被指向的函式接受兩個double引數,並返回乙個double值 calculate 函式的型別也是double,並返回被指向的函式值用calculate 的兩個double引數計算得到的值。例如,假設add 函...

eval函式 php PHP eval函式使用介紹

eval echo hello world 上邊 等同於下邊的 echo hello world 在瀏覽器中都輸出 hello world 運用eval 要注意幾點 1.eval函式的引數的字串末尾一定要有分號,在最後還要另加乙個分號 這個分號是php限制 2.注意單引號,雙引號和反斜槓的運用。如果...

函式 函式使用效能

以便 defer 能在合適時機執行 錯誤的例子 func example 這地方有個問題,example 函式是乙個加鎖操作。m.unlock 只有在 example 函式結束的時候才執行,那麼每次迴圈實際上是執行m.lock 語句,這個時候解鎖操作會被延遲到函式結束。很顯然這個邏輯並不是我們想要的...