形态转换opencv noob questiong

morphological transformation opencv noob questiong

祝大家今天过得愉快。所以我在这里学习 python,opencv raspberry pi 我希望有人能解释下面的代码是做什么的,我从 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html 那里读到它并没有解释什么迭代意味着如何选择最好的?物体检测有什么用, 谢谢。

for frame in cam.capture_continuous(raw, format="bgr", use_video_port=True):
        frame = frame.array
        hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
        
        mask = cv2.inRange(hsv,colorLower,colorUpper)
        mask = cv2.blur(mask,(3,3))
        mask= cv2.dilate(mask,None,iterations=5)
        mask= cv2.erode(mask,None,iterations=1)
        mask= cv2.dilate(mask,None,iterations=3)
        
        me,thresh = cv2.threshold(mask,127,255,cv2.THRESH_BINARY)
    
        cnts = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)[-2]
        center = None

这是一个非常明显的概念,无论哪种方式,如 documentation:

中所述

iterations: number of times dilation is applied.

所以 iterations=5 意味着我们连续 5 次应用扩张。

关于这个程序的应用,我建议你阅读Eroding and Dilating Tutorial from OpenCV,它非常清楚地解释了这些方法是如何工作的,但绝对的基础是我们需要腐蚀和膨胀来去除图像中的噪声并关闭不会形成实体轮廓的“孔”。

此转换的目的是获得我们正在寻找的对象的非常可靠的图像,以便稍后检测轮廓。

我们应用的迭代次数和变换次数的值因视频、相机功能、分辨率、噪声量等而有很大差异。您应该尝试并找到适合您特定情况的最佳值,或者尝试通用腐蚀 + 扩张并希望最好。