-
環(huán)境配置 :OpenCV在xCode中的安裝與環(huán)境配置
-
處理效果
效果展示兢仰,左下角是原圖瘟檩,右下角是灰度圖
-
說明(來自:OpenCV 中文網(wǎng)站)
-
閾值化主要有5種類型
-
普通灰度圖(圖中的藍(lán)色水平線代表著具體的一個閾值。
)
- 二進(jìn)制閾值化(
圖中的藍(lán)色水平線代表著具體的一個閾值。
)解釋:在運用該閾值類型的時候旨怠,先要選定一個特定的閾值量拷泽,比如:125夹姥,這樣州邢,新的閾值產(chǎn)生規(guī)則可以解釋為大于125的像素點的灰度值設(shè)定為最大值(如8位灰度值最大為255),灰度值小于125的像素點的灰度值設(shè)定為0褪子。
- 反二進(jìn)制閾值化
解釋:該閾值化與二進(jìn)制閾值化相似量淌,先選定一個特定的灰度值作為閾值,不過最后的設(shè)定值相反嫌褪。(在8位灰度圖中呀枢,例如大于閾值的設(shè)定為0,而小于該閾值的設(shè)定為255)笼痛。
- 截斷閾值化
解釋:同樣首先需要選定一個閾值裙秋,圖像中大于該閾值的像素點被設(shè)定為該閾值琅拌,小于該閾值的保持不變。(例如:閾值選取為125摘刑,那小于125的閾值不改變进宝,大于125的灰度值(230)的像素點就設(shè)定為該閾值)。
- 閾值化為0
解釋:先選定一個閾值枷恕,然后對圖像做如下處理:1 像素點的灰度值大于該閾值的不進(jìn)行任何改變党晋;2 像素點的灰度值小于該閾值的,其灰度值全部變?yōu)?徐块。
- 反閾值化為0
解釋:原理類似于0閾值未玻,但是在對圖像做處理的時候相反,即:像素點的灰度值小于該閾值的不進(jìn)行任何改變胡控,而大于該閾值的部分扳剿,其灰度值全部變?yōu)?。
-
函數(shù)說明
使用
threshold
函數(shù)完成
double threshold(InputArray src, // 輸入的灰度圖像
OutputArray dst, // 輸出處理圖像
double thresh, // 閾值大小
double maxval, // 設(shè)定的最大灰度值(該參數(shù)運用在二進(jìn)制與反二進(jìn)制閾值操作中)
int type ); // 閾值的類型(上面介紹的五中類型) -
實現(xiàn)代碼
- 使用兩個UISlider分別控制閾值與閾值類型昼激。
- 使用函數(shù)
cvtColor
將原圖轉(zhuǎn)換為了灰度圖
void cvtColor( InputArray src, // 原圖
OutputArray dst, // 返回灰度圖
int code,
int dstCn = 0 ); - 部分代碼
聲明
Mat src_t, src_t_gray, dst_t; // 這個是全局變量
獲取原圖像與灰度轉(zhuǎn)化
// 獲取原圖像矩陣
UIImage img = [UIImage imageNamed:@"6_S.png"];
UIImageToMat(img, src_t);
// 灰度轉(zhuǎn)化
cvtColor(src_t, src_t_gray, CV_RGB2GRAY);
閾值方法
// 閾值方法 滑動 Slider 就調(diào)用
- (void)threshold {
/
0: 二進(jìn)制閾值
1: 反二進(jìn)制閾值
2: 截斷閾值
3: 0閾值
4: 反0閾值
*/
threshold(src_t_gray, dst_t, threshold_value, 255,threshold_type);
_imageView.image = MatToUIImage(dst_t);
}
-
最終效果
效果展示庇绽,上面Slider控制閾值類型,下面Slider控制閾值