核函数

作者: 大龙10 | 来源:发表于2023-10-01 18:53 被阅读0次

    书名:计算机视觉40例从入门到深度学习:OpenCV-Python
    作者:李立宗
    出版社:电子工业出版社
    出版时间:2022-07-01
    ISBN:9787121436857


    二、理论基础

    3、按照面积筛选前景对象

    • 在查找图像轮廓时,会查找图像内所有对象的轮廓。
      也就是说,不仅会查找到图像内正常对象的轮廓,还会查找到一些噪声的轮廓。
      所以,在对图像内的对象进行计数时,并不需要对查找到的所有轮廓进行计算,只需计算面积大于一定数值的轮廓个数。
    • 函数cv2.contourArea()用于计算轮廓面积

    4、核函数

    • 在进行形态学操作时,必须使用一个特定的核(结构元)
    • 该核可以通过自定义生成,也可以通过函数cv2.getStructuringElement()构造。
    • 函数cv2.getStructuringElement()能够构造并返回一个用于形态学操作的指定大小和形状的核。
    • 除了使用该函数,用户也可以自己构建任意二进制掩模作为形态学操作中使用的核。

    5、getStructuringElement()

    retval = cv2.getStructuringElement( shape, ksize[,anchor])

    • shape表示形状类型,有3种,矩形,十字形(对角线为1),椭圆形
    • ksize表示核的大小
    • anchor表示核中的锚点位置。
      默认的值是(-1,-1),是形状的中心。只有十字形结构的核与锚点位置紧密相关。在其他情况下,锚点位置仅用于形态学运算结果的调整。

    四、不同结构的核对形态学操作的影响

    import cv2
    
    o=cv2.imread("d:\\kernel.jpg",cv2.IMREAD_UNCHANGED)
    kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(59,59))
    kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS,(59,59))
    kernel3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(59,59))
                                        
    dst1 = cv2.dilate(o, kernel1)
    dst2 = cv2.dilate(o, kernel2)
    dst3 = cv2.dilate(o, kernel3)
    
    cv2.imshow("orriginal",o)
    cv2.imshow("dst1",dst1)
    cv2.imshow("dst2",dst2)
    cv2.imshow("dst3",dst3)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    ● 图(a)是原始图像o。
    ● 图(b)是使用矩形结构的核对原始图像进行膨胀操作的结果dst1。
    ● 图(c)是使用十字形结构的核对原始图像进行膨胀操作的结果dst2。
    ● 图(d)是使用椭圆形结构的核对原始图像进行膨胀操作的结果dst3。

    相关文章

      网友评论

          本文标题:核函数

          本文链接:https://www.haomeiwen.com/subject/ambjbdtx.html