opencv目标检测常用方法

opencv目标检测常用方法

  • 读图,显示图片,关闭窗口
  img_ori = cv2.imread( './11.png ' )
  cv2.imshow( 'img_ori', img_ori)
  cv2.waitKey (1000)
  cv2.destroyAllWindows()
  • 灰度值转化

    gray_image = cv2.cvtColor(img_ori, cv2.COLOR_BGR2GRAY)
    cv2.imshow('gray', gray_image)

  • 二值化
    # 二值化 cv2.THRESH_OTSU
    threshold, binary_image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY_INV)
    cv2.imshow('bin', binary_image)

函数

  • cv2.THRESH_OTSU
cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

Otsu’s可以自己找到一个认为最好的阈值。并且Otsu’s非常适合于图像灰度直方图具有双峰的情况,他会在双峰之间找到一个值作为阈值,对于非双峰图像,可能并不是很好用。


  • cv2.findContours

(32条消息) cv2.findContours()函数用法_wzh111wzh的博客-CSDN博客_findcontours

 image, contours, hierarchy cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) 

cv2.findContours()函数返回两个值,一个是轮廓本身(countours),还有一个是每条轮廓对应的属性(hierarchy)。
cv2.findContours()函数首先返回一个list,list中每个元素都是图像中的一个轮廓,用numpy中的ndarray表示。每个轮廓是一个ndarray,每个ndarray是轮廓上的点的集合。


  • inrange

    void inRange(InputArray src, InputArray lowerb,
                              InputArray upperb, OutputArray dst);
    

根据上下的三位RGB数组来进行二值化

主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作


  • 形态学运算算子
  MORPH_OPEN – 开运算(Opening operation)
  MORPH_CLOSE – 闭运算(Closing operation)
  MORPH_GRADIENT - 形态学梯度(Morphological gradient)
  MORPH_TOPHAT - 顶帽(Top hat)
  MORPH_BLACKHAT - 黑帽(Black hat)
  
  • 开运算:
    先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域
  • 闭运算:
    先膨胀,再腐蚀,可清除小黑点
  • 形态学梯度:
    膨胀图与腐蚀图之差,提取物体边缘
  • 顶帽:
    原图像-开运算图,突出原图像中比周围亮的区域
  • 黑帽:
    闭运算图-原图像,突出原图像中比周围暗的区域

  • 轮廓检测

(32条消息) opencv笔记二十九(轮廓发现)findContours(t2, contour, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));_晴宁的博客-CSDN博客

根据二值化图像提取轮廓


posted @   Rogerssss  阅读(844)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示