您好,登錄后才能下訂單哦!
OpenCV如何實現腐蝕,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
腐蝕和膨脹是最基本的形態學運算。
腐蝕和膨脹是針對白色部分(高亮部分)而言的。
膨脹就是對圖像高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域;腐蝕是原圖中的高亮區域被蠶食,效果圖擁有比原圖更小的高亮區域。
膨脹
膨脹就是求局部最大值的操作,從圖像直觀看來,就是將圖像光亮部分放大,黑暗部分縮小。
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(){ Mat img = imread("lol1.jpg"); namedWindow("原始圖", WINDOW_NORMAL); imshow("原始圖", img); Mat out; Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); dilate(img, out, element); namedWindow("膨脹操作", WINDOW_NORMAL); imshow("膨脹操作", out); waitKey(0); }
可以看到,圖像原來光亮的部分被放大了,黑暗的部分被縮小了。
腐蝕
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(){ Mat img = imread("lol1.jpg"); namedWindow("原始圖", WINDOW_NORMAL); imshow("原始圖", img); Mat out; Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); erode(img, out, element); namedWindow("腐蝕操作", WINDOW_NORMAL); imshow("腐蝕操作", out); waitKey(0); }
可以看到,圖像原來黑暗的部分被放大了,明亮的部分被縮小了。
開運算:先腐蝕再膨脹,用來消除小物體
閉運算:先膨脹再腐蝕,用于排除小型黑洞
形態學梯度:就是膨脹圖與俯視圖之差,用于保留物體的邊緣輪廓。
頂帽:原圖像與開運算圖之差,用于分離比鄰近點亮一些的斑塊。
黑帽:閉運算與原圖像之差,用于分離比鄰近點暗一些的斑塊。
opencv里有一個很好的函數getStructuringElement,我們只要往這個函數傳相應的處理參數,就可以進行相應的操作了,使用起來非常方便。
下面列舉一下相應的操作宏定義。
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(){ Mat img = imread("lol1.jpg"); namedWindow("原始圖", WINDOW_NORMAL); imshow("原始圖", img); Mat out; Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); morphologyEx(img, out, MORPH_GRADIENT, element); namedWindow("形態學處理操作", WINDOW_NORMAL); imshow("形態學處理操作", out); waitKey(0); }
形態學梯度處理
這個是頂帽運算的效果
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。