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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenCV形态学运算

發(fā)布時間:2023/12/2 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV形态学运算 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.OpenCV形態(tài)學運算morphologyEx開運算?、閉運算?、形態(tài)學梯度?、頂帽運算?、黑帽運算?、腐蝕運算?、膨脹運算?、擊中擊不中運算


?

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

InputArray src:?輸入圖像,可以是Mat類型,對于圖像通道數(shù)無要求,但圖像深度必須是CV_8UCV_16UCV_16SCV_32FCV_64F?
. OutPutArray dst:?
目標圖像,與原圖像尺寸核類型相同?
. int op:?形態(tài)學運算的類型,可以通過MorphTypes查看,如下所示:?
標識符 | 運算類型?
MORPH_OPEN 開運算?
MORPH_CLOSE :閉運算?
MORPH_GRADIENT 形態(tài)學梯度?
MORPH_TOPHAT:頂帽運算?
MORPH_BLACKHAT 黑帽運算?
MORPH_ERODE :腐蝕運算?
MORPH_DILATE :膨脹運算?
MORPH_HITMISS: 擊中擊不中運算(只支持CV_8UC1類型的二值圖像)

. InputArray kernel:?形態(tài)學運算的內核,如果是Mat()則表示的是參考點位于內核中心3x3的核,前面也提到一般使用前需要定義一個Mat變量結合getStructuringElement()函數(shù)使用,getStructuringElement會返回指定形狀和尺寸的結構元素,這里再重申一下getStructuringElement的參數(shù),其函數(shù)原型如下:

Mat cv::getStructuringElement ( int shape,Size ksize,Point anchor = Point(-1,-1))

int shape: kernel的形狀,由cv::MorphShapes指定,如下:

?

分別是矩形(MORPH_RECT)、交叉形(MORPH_CROSS)、橢圓形(MORPH_ELLIPSE)?
. Size ksize: kernel
的尺寸?
. Point anchor = Point(-1, -1): 錨點位置

. Point anchor=Point(-1, -1): 錨點位置?
. int iterations=1: 迭代使用函數(shù)的次數(shù),默認值為1?
. int borderType=BORDER_CONSTANT:
用于推斷圖像外部像素的某種邊界模式,有默認值BORDER_CONSTANT?
. const Scalar & borderValue=morphologyDefaultBorderValue():
當邊界為常數(shù)時的邊界值,可以通過createMorphologyFilter() 查看更多細節(jié)。

這些形態(tài)學操作都是可執(zhí)行就地操作(in-place),對于多通道圖像,每個圖像通道進行單獨操作。

?

?

2.示例


?

#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace std;using namespace cv;int main(){Mat srcImage = cv::imread("1.png", 1);if (!srcImage.data)return 1;Mat srcGray;cvtColor(srcImage, srcGray, CV_BGR2GRAY);// 定義結構元素Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));Mat topHatMat, blackHatMat;// 形態(tài)學Top-Hat 頂帽morphologyEx(srcGray, topHatMat,MORPH_TOPHAT, element);// 形態(tài)學Top-Hat 黑帽morphologyEx(srcGray, blackHatMat,MORPH_BLACKHAT, element);Mat Object_img;Object_img = srcGray + topHatMat - blackHatMat;imshow(" srcGray ", srcGray);imshow(" topHatMat ", topHatMat);imshow(" blackHatMat ", blackHatMat);imshow(" Object_img ", blackHatMat);waitKey(0);return 0;}

?

總結

以上是生活随笔為你收集整理的OpenCV形态学运算的全部內容,希望文章能夠幫你解決所遇到的問題。

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