OpenCV中的轮廓分析

OpenCV中的轮廓分析

代码实现:

import cv2
import numpy as np
#轮廓分析(以边数划分)
img = cv2.imread('polydp.png')
cv2.imshow('shape',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
contours,heriachy = cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# cv2.drawContours(img,contours,-1,(100,200,255),2)
# cv2.imshow('binary',img)
for i,contour in enumerate(contours):
    polydp = cv2.approxPolyDP(contour,4,True)
    #polydp.shape的第一个参数是边缘的边数(多边形)
    print(polydp.shape)
    if polydp.shape[0] > 10:
        cv2.drawContours(img,contours,i,(255,0,0),2)
    elif polydp.shape[0] > 6:
        cv2.drawContours(img,contours,i,(0,255,0),2)
    else:
        cv2.drawContours(img,contours,i,(0,0,255),2)
cv2.imshow('measure',img)
cv2.waitKey()

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV 进行轮廓预处理的常见步骤包括:图像二值化、图像平滑处理和寻找轮廓。 1. 图像二值化 对于彩色或灰度图像,需要将其转换为二值图像,以便更好地寻找轮廓。可以使用 cv2.threshold() 函数进行阈值处理,将像素值大于或小于给定阈值的像素设置为最大值或最小值。例如,将图像转换为二值图像的代码如下: ``` gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) ``` 其,gray 是原始图像,binary 是二值化后的图像,阈值为 127。 2. 图像平滑处理 为了减少图像噪声对轮廓的影响,可以对图像进行平滑处理。可以使用平滑滤波器,如高斯滤波器、值滤波器等。例如,使用高斯滤波器进行平滑处理的代码如下: ``` blur = cv2.GaussianBlur(binary, (3, 3), 0) ``` 其,binary 是二值化后的图像,(3, 3) 是高斯核的大小,0 是标准差。 3. 寻找轮廓 可以使用 cv2.findContours() 函数寻找图像轮廓。该函数会返回一个列表,包含图像所有轮廓的坐标。例如,寻找轮廓的代码如下: ``` contours, hierarchy = cv2.findContours(blur, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ``` 其,blur 是平滑处理后的图像,cv2.RETR_TREE 表示返回轮廓树形结构,cv2.CHAIN_APPROX_SIMPLE 表示仅保留轮廓的端点坐标。 在寻找轮廓后,可以使用 cv2.drawContours() 函数将轮廓绘制在原始图像上,以便观察和分析。例如,绘制轮廓的代码如下: ``` cv2.drawContours(image, contours, -1, (0, 0, 255), 2) ``` 其,image 是原始图像,contours 是轮廓列表,-1 表示绘制所有轮廓,(0, 0, 255) 是绘制轮廓的颜色,2 是绘制轮廓的线宽。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值