日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

腐蚀和膨胀(erode and dilate)

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腐蚀和膨胀(erode and dilate) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

腐蝕和膨脹

在這兩個操作中都需要有一個滑動窗口一樣的小塊,這個小塊在整副圖像上面進行一個像素一個像素的滑動。

膨脹

膨脹操作:當前像素值等于該小塊覆蓋下的圖像區(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);

附加

為了調試參數(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(拖動條的名字,所在彈出框的名字,&改變的變量,拖動條的最大值,回調的函數(shù) ); 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的腐蚀和膨胀(erode and dilate)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。