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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OPenCV膨胀函数dilate()的使用

發布時間:2024/9/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OPenCV膨胀函数dilate()的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OPenCV版本:4.4

IDE:VS2017

功能描述

簡述:使用一個指定的核元素去膨脹一個圖像,圖像膨脹的過程類似于一個卷積的過程,源圖像矩陣A以及結構元素B,B在A矩陣上依次移動,每個位置上B所覆蓋元素的最大值替換B的中心位置值(即錨點處),完成整個膨脹的過程。

注意:所謂的腐蝕與膨脹的對象是針對圖像中的白色元素所說的。看成是圖像中的物體話會理解反。

算法通俗理解:膨脹算法使圖像擴大一圈,給圖像中的對象邊界添加像素,其運算過程就是用3X3的結構元素,掃描二值圖像的每一個像素,用結構元素與其覆蓋的二值圖像做“與”運算,如果都為0,結構圖像的該像素為0,否則為1。結果就是使二值圖像擴大一圈。

函數使用一個指定的核元素去膨脹源圖像,內核有一個可定義的 錨點,我們叫他內核中心點,膨脹操作時,獲取內核覆蓋區域最大像素值,并代替錨點的像素,最大值通過以下公式獲取:
dst(x,y)=max?(x′,y′):element(x′,y′)≠0src(x+x′,y+y′)\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y') dst(x,y)=(x,y):element(x,y)?=0max?src(x+x,y+y)
函數支持就地模式,膨脹操作可以迭加使用多次,在多通道圖像的情況下,每個通道獨立處理。

函數原型:

CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,Point anchor = Point(-1,-1), int iterations = 1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefaultBorderValue() );

參數描述

  • 參數 src 輸入圖像;通道的數量可以是任意的,但是深度值應該是以下之一:
    CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.

  • 參數 dst 和源圖像同樣大小和類型的輸出圖像。

  • 參數 kernel 膨脹核元素,如果elemenat=Mat(), 是一個3 x 3的矩形核元素,核可以使用getStructuringElement來創建。

  • 參數 anchor 元素中的錨點的位置,默認是值(-1,-1),也就是說錨點在元素的中心位置。

  • 參數 iterations 膨脹的迭代次數。

  • 參數 borderType 像素外推方法。參見#BorderTypes, BORDER_WRAP不支持。

  • 參數 borderValue 固定邊緣的情況下的邊緣值。

    參考: erode, morphologyEx, getStructuringElement

源碼示例:

#include <iostream> #include <opencv2/opencv.hpp>int main() {cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");if (image.empty()){std::cout << "image read failed!" << std::endl;cv::waitKey(0);return 0;}cv::Mat imageDst;//自定義核cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(8, 8));cv::imshow("原圖", image);cv::dilate(image, imageDst, element);cv::imshow("膨脹", imageDst);cv::waitKey(0); }

運行結果:

背景(白色)膨脹,而果汁杯子的圖像及水果的圖像縮小了。

總結

以上是生活随笔為你收集整理的OPenCV膨胀函数dilate()的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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