腐蝕和膨脹
在這兩個操作中都需要有一個滑動窗口一樣的小塊,這個小塊在整副圖像上面進行一個像素一個像素的滑動。
膨脹
膨脹操作:當前像素值等于該小塊覆蓋下的圖像區(qū)域的最大像素值。
從而當背景色為白色,字體為黑色時,執(zhí)行一次膨脹操作,黑色字體將變細。
相關的api使用:
Mat ele = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
dilate(src,dst,ele,Point(-1,-1));
MORPH_RECT:滑動塊為矩形
MORPH_CROSS:滑動塊為十字型
MORPH_ELLIPSE:滑動塊為橢圓形
Point(-1,-1):使用默認的錨點
腐蝕
腐蝕操作:當前像素值等于該小塊覆蓋下的圖像區(qū)域的最小像素值。
從而當背景色為白色,字體為黑色時,執(zhí)行一次腐蝕操作,黑色字體將變粗。
相關api的使用:
Mat ele = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
erode(src,dst,ele);
附加
為了調(diào)試參數(shù)方便,使用createTrackbar()函數(shù)來將要變化的參數(shù)值變成可拖動的進度條,方便測試最合適的參數(shù)。
具體的應用:
#include <ros/ros.h>
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int eroding_x = 1;
int eroding_y = 1;
int dilate_x = 1;
int dilate_y = 1;
Mat src;void Erod(int,void*);
void Dila(int,void*);int main(int argc, char *argv[])
{src = Mat::ones(Size(400,400),CV_32F);putText(src,"test",Point(100,100),3,2,Scalar(0,0,0),3);line(src,Point(10,10),Point(10,300),Scalar(0,0,0),3,8);line(src,Point(10,10),Point(300,10),Scalar(0,0,0),3,8);imshow("src",src);namedWindow("Dilate window",CV_WINDOW_AUTOSIZE);namedWindow("Eroding window",CV_WINDOW_AUTOSIZE);createTrackbar("dilate x size","Dilate window",&dilate_x,17,Dila);createTrackbar("dilate y size","Dilate window",&dilate_y,17,Dila);createTrackbar("eroding x size","Eroding window",&eroding_x,17,Erod);createTrackbar("eroding y size","Eroding window",&eroding_y,17,Erod);waitKey(0);return 0;
}void Dila(int,void*)
{if(dilate_x > 0 && dilate_y > 0){Mat ele = getStructuringElement(MORPH_CROSS,Size(dilate_x,dilate_y),Point(-1,-1));Mat temp;dilate(src,temp,ele,Point(-1,-1));imshow("dilate",temp);}else{cout << "the dilate_x and dilate_y don't equals 0" << endl;}
}void Erod(int,void*)
{if(eroding_x > 0 && eroding_y > 0){Mat ele = getStructuringElement(MORPH_RECT,Size(eroding_x,eroding_y),Point(-1,-1));Mat temp;erode(src,temp,ele);imshow("erode",temp);}else{cout << "the eroding_x and eroding_y don't equals 0" << endl;}
}
其中:
createTrackbar(拖動條的名字,所在彈出框的名字,&改變的變量,拖動條的最大值,回調(diào)的函數(shù)
);
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結
以上是生活随笔為你收集整理的腐蚀和膨胀(erode and dilate)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。