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
### OpenCV中的轮廓检测与处理 #### 轮廓检测概述 在计算机视觉领域,轮廓检测是一种重要的技术,用于提取图像中对象的边界。通过 `cv2.findContours()` 和 `drawContours()` 函数可以实现这一目标[^4]。 #### 使用`findContours()`函数 该函数的主要参数包括输入图像、轮廓检索模式以及轮廓逼近方法。具体来说: - **image**: 输入的二值图像是必需的,通常由边缘检测算法(如Canny算子)生成。 - **mode**: 定义了如何检索轮廓。例如,`cv2.RETR_EXTERNAL` 只会返回最外层的轮廓;而 `cv2.RETR_TREE` 则会构建完整的轮廓层次结构[^3]。 - **method**: 控制轮廓的近似方式。如果选择了 `cv2.CHAIN_APPROX_SIMPLE`,则仅保留必要的点来表示轮廓形状;若选择 `cv2.CHAIN_APPROX_NONE`,则保存所有的轮廓点。 以下是具体的代码示例展示如何应用这些功能: ```python import cv2 import numpy as np # 加载原始图片并转换成灰度图 srcImage = cv2.imread("F:\\opencv\\OpenCVImage\\findContours.jpg") # 加载彩色图像 [^2] grayImage = cv2.cvtColor(srcImage, cv2.COLOR_BGR2GRAY) # 应用阈值化操作获取二值图像 _, binaryImage = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY) # 查找轮廓 contours, hierarchy = cv2.findContours(binaryImage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 找到外部轮廓 # 绘制轮廓 resultImage = srcImage.copy() cv2.drawContours(resultImage, contours, -1, (0, 255, 0), 2) # 在原图上绘制绿色线条 [-1 表示绘制所有找到的轮廓] # 显示结果 cv2.imshow('Original Image', srcImage) cv2.imshow('Detected Contours', resultImage) cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述脚本展示了从加载图像到执行轮廓检测的过程,并最终将检测到的轮廓可视化出来。 #### 进一步优化:轮廓压缩和不变矩计算 除了基本的轮廓检测之外,还可以利用轮廓压缩减少数据量或者借助Hu不变矩描述物体特性。这有助于提高后续分析阶段的速度与准确性[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值