OpenCV形态学运算
1.OpenCV形態(tài)學運算morphologyEx(開運算?、閉運算?、形態(tài)學梯度?、頂帽運算?、黑帽運算?、腐蝕運算?、膨脹運算?、擊中擊不中運算)
?
InputArray src:?輸入圖像,可以是Mat類型,對于圖像通道數(shù)無要求,但圖像深度必須是CV_8U、CV_16U、CV_16S、CV_32F或CV_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.示例
?
?
總結
以上是生活随笔為你收集整理的OpenCV形态学运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV 像素的读取与操作
- 下一篇: 中值滤波medianBlur