当前位置:   article > 正文

opencv实现物体轮廓识别_opencv识别物体

opencv识别物体

        基于简单的阈值分割,将带识别的物体和背景在二值图中区分开,再提取并对比轮廓,最后将目标轮廓的物体标记。

1.阈值分割

        cv2.cvtColor(image,cv2.COLOR_BGR2HSV):将bgr格式图像信息转换为hsv格式并返回。cv2.COLOR_BGR2HSV是类中的常数,注意字母大写。

        cv2.medianBlur(image,ksize):将图像进行中值滤波处理,返回处理结果。ksize为滤波核的大小,为比1大的奇数。

        cv2.inRange(image,lower_red,upper_red):将图像在lower_red和upper_red之间的颜色变为255,其他变为0,返回处理结果。其中,lower_red和upper_red可直接由元组表示。

        cv2.getStructuringElement(,,):返回指定形状和尺寸的结构像素矩阵。第一个参数表示内核的形状,即cv2.MORPH_RECT cv2.MORPH_CROSS和cv2.MORPH_MORPH_CROSS之一。第二个参数表示内核的尺寸,第三个参数表示锚点的位置,默认为(-1,-1)。

        cv2.morphologyEx(image, op, kernel) :进行各类形态学的变化。op为变化的方式,有cv2.MORPH_OPEN和cv2.MORPH_CLOSE两种。kernel表示方框的大小。

  1. import cv2
  2. image=cv2.imread("pic.jpg")
  3. hsv=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
  4. hsv=cv2.medianBlur(hsv,5)
  5. mask=cv2.inRange(hsv,(11,43,46),(25,255,255))
  6. line=cv2.getStructuringElement(cv2.MORPH_RECT,(15,15),(-1,-1))
  7. mask=cv2.morphologyEx(mask,cv2.MORPH_OPEN,line)
  8. cv2.imshow("mask",mask)
  9. cv2.waitKey(10000)
  10. cv2.destroyAllWindows()

2.提取轮廓

       contours, hierarchy = cv2.findContours(image,mode,method):检测并返回物体的轮廓。其中,mode是轮廓的模式,cv2.RETR_EXTERNAL只检测外轮廓。method为轮廓的近似方法,cv2.CHAIN_APPROX_SIMPLE压缩水平方向、垂直方向、对角线方向的元素,只保留该方向的终点坐标。contours和hierarchy分别为返回的轮廓以及每条轮廓对应的属性。

        cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None):将轮廓画出。注意,函数会直接修改image,而不会返回值。

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/765089
推荐阅读
相关标签
  

闽ICP备14008679号