12 形態學操作(理解很重要)

2021-10-02 16:54:53 字數 1968 閱讀 7195

12- 形態學操作(理解很重要)

**及理解注釋:

#include;

#include;

using namespace std;

using namespace cv;

int main(int argc, char* ar**)

imshow("source1原影象", source1);

/* 形態學操作型別: 二值化影象運用

開操作(morph_open) : 先腐蝕 後 膨脹,去掉小的物件;若前景白色+白色小快 後景黑色 = 去掉白色小塊

閉操作(morph_close): 先膨脹 後 腐蝕,填充小的物件;若前景白色+白色小快+白色有小洞 後景黑色 = 填充小洞

頂帽(morph_tophat): 開操作 與 原影象 之間的差值影象

黑帽(morph_blackhat): 閉操作 與 原影象 之間的差值影象

形態學梯度(morph_gradient):膨脹減去腐蝕。又 基本梯度(包括內部梯度,xy方向梯度)

*/ mat kernel = getstructuringelement(morph_rect,size(5,5),point(-1,-1));

// 結構元素;矩形 ,模板(5,5),中心點;(重點理解)

mat change1;

morphologyex(source1,change1,morph_open ,kernel); // 開操作:腐蝕+膨脹 > 去掉小白點

imshow("change1開操作", change1);

mat change2;

morphologyex(source1, change2, morph_close, kernel); // 閉操作:膨脹+腐蝕 > 填充黑洞

//imshow("change2閉操作", change2);

mat change3;

morphologyex(source1, change3, morph_tophat, kernel); // 頂帽操作:原影象 與 開操作之間的差值

//imshow("change3頂帽操作", change3);

mat change4;

morphologyex(source1, change4, morph_blackhat, kernel); // 黑帽操作:原影象 與 閉 操作之間的差值

//imshow("change4黑帽操作", change4);

mat change5;

morphologyex(source1, change5, morph_gradient, kernel); // 形態學梯度操作; 膨脹 - 腐蝕 > 取出形狀

//imshow("change5形態學梯度操作", change5);

waitkey(0);

return 0;

}

**演示效果:

一:原圖與開操作之後的影象(即對原圖先腐蝕 後膨脹之後的影象):

二:原圖與閉操作之後的影象(即對原圖先膨脹 後 腐蝕之後的影象):

三:頂帽操作:原影象 與 開操作之間的差值:

四:黑帽操作:原影象 與 閉 操作之間的差值:

五:形態學梯度操作; 膨脹 - 腐蝕 :

形態學操作

對原影象進行先腐蝕後膨脹。用白色背景黑色前景的來說,對影象先進行腐蝕,小區域的白色將被消除,然後在膨脹,使得除了消除掉的部分還原為原來的樣子 主要用途 用來消除高畫素值的小塊 對原影象進行先膨脹後腐蝕。還是利用白色背景黑色前景的來說,對影象先進行膨脹,小區域的黑色將被消除,然後再進行腐蝕,使得除了消...

形態學操作

簡介 連通域 簡介 結構元素 mat cv getstructuringelement shape,ksize 實現 opencv提供了用於影象腐蝕的erode 函式 void cv erode src,dst,kernel,anchor,iterations 示例 include include ...

morphologyEX形態學操作

一般形態學操作會有兩步 mat kernel getstructuringelement morph rect,size 3,3 point 1,1 morphologyex src,dst,morph open,kernel,point 1,1 1 其中第一步用於構造乙個結構元素,也就是在第二步需...