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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

morphologyEx函数

發(fā)布時間:2025/4/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 morphologyEx函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

void?morphologyEx(InputArray?src, OutputArray?dst, int?op, InputArray?kernel, Point?anchor=Point(-1,-1), intiterations=1, int?borderType=BORDER_CONSTANT, const Scalar&?borderValue=morphologyDefaultBorderValue()?)

函數(shù)形式:


函數(shù)參數(shù):

  • 第一個參數(shù),InputArray類型的src,輸入圖像,即源圖像,填Mat類的對象即可。圖像位深應(yīng)該為以下五種之一:CV_8U, CV_16U,CV_16S, CV_32F 或CV_64F。
  • 第二個參數(shù),OutputArray類型的dst,即目標圖像,函數(shù)的輸出參數(shù),需要和源圖片有一樣的尺寸和類型。
  • 第三個參數(shù),int類型的op,表示形態(tài)學運算的類型,可以是如下之一的標識符:
    • MORPH_OPEN – 開運算(Opening operation)
    • MORPH_CLOSE – 閉運算(Closing operation)
    • MORPH_GRADIENT -形態(tài)學梯度(Morphological gradient)
    • MORPH_TOPHAT - “頂帽”(“Top hat”)
    • MORPH_BLACKHAT - “黑帽”(“Black hat“)

另有CV版本的標識符也可選擇,如CV_MOP_CLOSE,CV_MOP_GRADIENT,CV_MOP_TOPHAT,CV_MOP_BLACKHAT,這應(yīng)該是OpenCV1.0系列版本遺留下來的標識符,和上面的“MORPH_OPEN”一樣的效果。

?

  • 第四個參數(shù),InputArray類型的kernel,形態(tài)學運算的內(nèi)核。若為NULL時,表示的是使用參考點位于中心3x3的核。我們一般使用函數(shù) getStructuringElement配合這個參數(shù)的使用。getStructuringElement函數(shù)會返回指定形狀和尺寸的結(jié)構(gòu)元素(內(nèi)核矩陣)。關(guān)于getStructuringElement我們上篇文章中講過了,這里為了大家參閱方便,再寫一遍:

其中,getStructuringElement函數(shù)的第一個參數(shù)表示內(nèi)核的形狀,我們可以選擇如下三種形狀之一:

  • 矩形: MORPH_RECT
  • 交叉形: MORPH_CROSS
  • 橢圓形: MORPH_ELLIPSE

而getStructuringElement函數(shù)的第二和第三個參數(shù)分別是內(nèi)核的尺寸以及錨點的位置。

我們一般在調(diào)用erode以及dilate函數(shù)之前,先定義一個Mat類型的變量來獲得getStructuringElement函數(shù)的返回值。對于錨點的位置,有默認值Point(-1,-1),表示錨點位于中心。且需要注意,十字形的element形狀唯一依賴于錨點的位置。而在其他情況下,錨點只是影響了形態(tài)學運算結(jié)果的偏移。

  • 第五個參數(shù),Point類型的anchor,錨的位置,其有默認值(-1,-1),表示錨位于中心。
  • 第六個參數(shù),int類型的iterations,迭代使用函數(shù)的次數(shù),默認值為1。
  • 第七個參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式。注意它有默認值BORDER_ CONSTANT。
  • 第八個參數(shù),const Scalar&類型的borderValue,當邊界為常數(shù)時的邊界值,有默認值morphologyDefaultBorderValue(),一般我們不用去管他。需要用到它時,可以看官方文檔中的createMorphologyFilter()函數(shù)得到更詳細的解釋。

getStructuringElement函數(shù)相關(guān)的調(diào)用示例代碼如下

int g_nStructElementSize = 3; //結(jié)構(gòu)元素(內(nèi)核矩陣)的尺寸//獲取自定義核 Mat element =getStructuringElement(MORPH_RECT,Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),Point(g_nStructElementSize, g_nStructElementSize ));
opencv代碼:

//-----------------------------------【頭文件包含部分】--------------------------------------- // 描述:包含程序所依賴的頭文件 //---------------------------------------------------------------------------------------------- #include <opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp>//-----------------------------------【命名空間聲明部分】--------------------------------------- // 描述:包含程序所使用的命名空間 //----------------------------------------------------------------------------------------------- using namespace cv; //-----------------------------------【main( )函數(shù)】-------------------------------------------- // 描述:控制臺應(yīng)用程序的入口函數(shù),我們的程序從這里開始 //----------------------------------------------------------------------------------------------- int main( ) {//載入原始圖 Mat image = imread("1.jpg"); //工程目錄下應(yīng)該有一張名為1.jpg的素材圖//創(chuàng)建窗口 namedWindow("【原始圖】開運算"); namedWindow("【效果圖】開運算"); //顯示原始圖 imshow("【原始圖】開運算", image); //定義核Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //進行形態(tài)學操作morphologyEx(image,image, MORPH_OPEN, element);//顯示效果圖 imshow("【效果圖】開運算", image); waitKey(0); return 0; }

總結(jié)

以上是生活随笔為你收集整理的morphologyEx函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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