[OpenCV] EP6_轮廓查找与形状分析

OpenCV图像细化与骨架提取实战:从原理到工业级应用 在计算机视觉与图像处理领域,形态学操作是分析和处理二值图像形状的基础技术。其核心原理是通过结构元素与图像的相互作用,实现区域的膨胀、腐蚀、开闭运算等,从而提取或修改目标的拓扑与几何特征。这项技术的核心价值在于,它能将复杂的、具有宽度的物体区域,转化为单像素宽、保留原始拓扑结构的“骨架”表示,极大地简化了后续的形状分析与特征提取。在工业视觉检测、医学图像分析(如血管网络提取)和文档处理(如OCR字符细化)等场景中,骨架提取是进行精确测量、路径追踪和模式识别的关键预处理步骤。本文聚焦于实现鲁棒的细化算法,针对现 阅读详情

Sub.1 绘制图像轮廓

It.1 核心概念 🏖️

1)什么是轮廓?

  1. 定义:由连续像素点组成的闭合曲线,反映物体的基本外形特征
  2. 本质原理:通过检测像素值突变(边缘)形成的闭合路径
  3. 与边缘区别:
特征轮廓边缘
连续性必须闭合且连续可以是不连续的线段
数据结构有序点序列(矢量特征)离散像素点集合(栅格特征)
应用场景形状分析、目标识别特征提取、图像分割
关系由边缘连接形成构成轮廓的基础元素

2)轮廓的作用?

  • 形状分析:计算面积、周长等几何特征
  • 目标识别:通过形状匹配识别特定物体(如手势识别)
  • 图像分割:提取感兴趣区域(ROI)
  • 工业检测:零件尺寸测量、缺陷检测
  • 医学影像:器官轮廓提取分析

 

2)轮廓的作用?

  • 形状分析:计算面积、周长等几何特征
  • 目标识别:通过形状匹配识别特定物体(如手势识别)
  • 图像分割:提取感兴趣区域(ROI)
  • 工业检测:零件尺寸测量、缺陷检测
  • 医学影像:器官轮廓提取分析

It.2 寻找轮廓 🏖️

contours, hierarchy = cv2.findContours(image,mode,method)

# 查找轮廓
contours, hierarchy = cv2.findContours(binary, 
                                       cv2.RETR_EXTERNAL, 
                                       cv2.CHAIN_APPROX_SIMPLE)

1. 参数:(二值化图像,查找方式,存储方式)

(0)image参数:
  • 必须是二值图像
  • 目标区域需为白色(255),背景为黑色(0)
(1)mode参数:轮廓查找方式
模式特点
RETR_EXTERNAL只检测最外层轮廓 → 类似描边,最常用
RETR_LIST检测所有轮廓,不提供父子轮廓索引 → 无层级关系
RETR_CCOMP所有轮廓,组织为内外层级 → 层级0:外;层级1:内
RETR_TREE完整层级树结构(父子关系明确)→ 外root,内树枝
(2)method参数:轮廓存储方式
  • CHAIN_APPROX_NONE :存储所有轮廓点的坐标。
  • CHAIN_APPROX_SIMPLE:默认使用! 只存储有用的点。
    • e.g. 直线只存 2 端点,矩形只存 4 角点
  • CHAIN_APPROX_TC89_L1:最精确,最复杂,会使用更复杂的算法来存储轮廓点。

2. 返回值:

  • contours:轮廓点列表

    • 示例:contours[0]表示第一条轮廓的所有点坐标
  • hierarchy:轮廓间的层级关系,仅用于复杂嵌套结构

    • 对于第i条轮廓,有四个索引,hierarchy[i][x]
    • [Next, Previous, First_Child, Parent](不存在则为-1)
    • 外轮廓:父 → 内轮廓:子

3. 注意点

  • 二值化质量决定成败,建议使用OTSU算法或自适应阈值
  • 原理:遍历每个像素,只要邻域有相反像素,就认为是一个边界点像素
    • 所以,预处理推荐使用中值滤波

 

It.3 绘制轮廓 🏖️

cv2.drawContours(image, contours, contourIdx, color, thickness)

# 绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)

  1. 参数
    • contourldx** **:要绘制的索引轮廓,默认-1绘制所有
    • thickness :线宽;正数实线;负数填充
  2. 返回值:None,在原图上绘制
  3. 注意点
    • 原图会被修改:建议使用img.copy()保护原始数据
    • 彩色绘制:需先将灰度图转BGR格式
    • 层级绘制:结合hierarchy参数可实现分层着色

四、代码模式 + 可视化图解

Study Example 🍀

1. 根据提取对象的颜色选择阈值法

import cv2 as cv

"""
绘制图像轮廓
"""
# 读取图像
num = cv.imread("images/num_black.png")
graph = cv.imread("images/graph_white.png")
# 二值化
num_gray = cv.cvtColor(num, cv.COLOR_BGR2GRAY)
graph_gray = cv.cvtColor(graph, cv.COLOR_BGR2GRAY)
# num 是黑色目标白色背景,使用反阈值法
_, num_binary = cv.threshold(num_gray, 0, 255, cv.THRESH_OTSU+cv.THRESH_BINARY_INV)
# graph是白色目标黑色背景,使用阈值法
_, graph_binary = cv.threshold(graph_gray, 0, 255, cv.THRESH_OTSU+cv.THRESH_BINARY)
cv.imshow("num_binary", num_binary)
cv.imshow("graph_binary", graph_binary)

# 查找轮廓:cv.findContours(二值化图像,查找方式,存储方式)
num_contours, num_hierarchy = cv.findContours(num_binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
graph_contours, graph_hierarchy = cv.findContours(graph_binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

# 绘制轮廓:cv.drawContours(图像,轮廓,轮廓索引,轮廓颜色,轮廓线宽)
# 拷贝原图,保护数据
num_copy = num.copy()
graph_copy = graph.copy()
# 绘制轮廓
cv.drawContours(num_copy, num_contours, -1, (0,255,0), -1)
cv.drawContours(graph_copy, graph_contours, -1, (255,0,0), 2)


cv.imshow("org_num", num)
cv.imshow("org_graph",graph)
cv.imshow("draw_num", num_copy)
cv.imshow("draw_graph", graph_copy)
cv.waitKey(0)
cv.destroyAllWindows()

输出

 2. 假设错误选择了阈值法

import cv2 as cv

# 读图及预处理
img = cv.imread("images/erode.png")
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

_, binary = cv.threshold(gray, 0, 255, cv.THRESH_OTSU+cv.THRESH_BINARY_INV)

# 查找轮廓
contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
img_copy = img.copy()
cv.drawContours(img_copy, contours, -1, (0, 255, 0), 2)

# 显示结果
cv.imshow("org", img)
"""
阈值法其实没有正确二值化,但因为 mode=cv.RETR_TREE 所以会将所有轮廓都绘制出来,
"""
cv.imshow("draw", img_copy)
cv.waitKey(0)
cv.destroyAllWindows()

输出:


🌟 总结:
  • 一般流程:二值化 → 查找轮廓 → 轮廓绘制
    • 二值化处理的阈值选择非常重要,直接影响结果
  • 绘制前复制原图,避免数据污染
  • 彩色绘制需要将灰度图转换为RGB图像

Sub.2 凸包特征检测

It.1 核心概念 🎋

Pt.1 凸包

1. 什么是凸包?
  • 定义:包含点集所有点的最小凸多边形
  • 数学本质:任意两点连线都在多边形内部
2. 为什么要检测凸包?
  • 应用:物体识别(如区分圆形和方形)、手势识别(检测手势的轮廓)、边界检测(提取物体的外部边界)。
  • 重要性:简化形状,快速计算。
    • 凸包能简化物体形状,去除内部细节和凹痕,保留最关键的外围特征,降低计算复杂度,适用于实时检测。

Pt.2 穷举法

  1. 遍历所有点对,两两配对连线

  2. 检查其他点是否全部位于直线同侧

    方法:向量叉积;若结果符号一致(全正或全负),则在直线同侧。
  3. 满足条件:属于凸包边

  • 不断for循环,时间复杂度高,实际应用很少用
  • 主要用于理解凸包概念

Pt.3 QuickHull法

1. 原理
  1. 找最远点: 最左和最右的两个点m和n,形成初始边,分割为上下两包
  2. 分治递归:
    • 对上包:找离mn最远的点p,pmn区域内的点排除
    • 再找离pm、pn最远的点...
  3. 合并结果
2. 什么时候用QuickHull来检测凸包?
  • 优点:时间复杂度低(O (n log n)),适合处理大量点,效率远高于穷举法。
  • 缺点:实现较复杂,需理解分治和距离计算。
  • 场景:实际应用中最常用的凸包算法,适用于图像轮廓点较多的场景(如手势识别、物体边界提取)

It.2 实际应用 🎋

Pt.1 获取凸包点

hull = cv2.convexHull(points)

  1. 参数:
  • points:必须是二维点集(N×1×2格式,numpy.ndarray)
  1. 返回值:凸包点的坐标数组
  2. 注意点:
    • 由cv2.findContours返回的contours,需先提取轮廓点,如contour = contours[0]

Pt.2 绘制凸包

  • 使用绘制多边形的方法 

1. 绘制多边形

  • cv2.polylines(img, pts, isClosed, color, thickness=1)
  • pts : 包含多边形顶点坐标的数组
    • 使用时:

      1. 参数是包含特征点的数组
      2. 需要转换为整数,使用** **.astype(np.int32)
      3. 最后,将其封装到列表里
      4. 多个多边形,可以依次放入列表[pts1, pts2, ...]
    • 原理

      1. 像素坐标是整数,需要转换类型来保证

      2. 封装到列表:src的shape一般是(n,2) → 代表有n个顶点,2对应(x,y)坐标。

        []封装到列表后,就变成了[array(shape=(n, 2))] ,OpenCV会将列表中的这个数组当成一个整体,然后去自动解析为 (n,1,2)的数组,进行后续处理。

  • isClosed:是否封闭图形 → True 则连接首尾顶
  • color :可以是三元组 / 四元组 / 整数 → BGR / BGRA / 灰度值
import cv2  
import numpy as np  

# 1. 读取图像并预处理  
image = cv2.imread('hand.jpg')  
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)  

# 2. 查找轮廓  
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  
contour = contours[0]  # 取第一个轮廓(假设只有一个物体)  

# 3. 计算凸包  
hull = cv2.convexHull(contour)  

# 4. 绘制凸包  
cv2.polylines(image, [hull.astype(np.int32)], isClosed=True, color=(0, 0, 255), thickness=2)  

# 5. 显示结果  
cv2.imshow('Convex Hull', image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  


 

Sub.3 图像轮廓特征查找

It.1 外接矩形和最小外接矩形 🎍

1. 概念区分

  • 外接矩形(Bounding Rect):(AABB)
    • 轴对齐矩形:通过轮廓点的x_min, x_max, y_min, y_max直接生成。
    • 特点:矩形边平行于图像坐标轴。
  • 最小外接矩形(Rotated Rect):(OBB)
    • 旋转矩形:包围轮廓的最小面积矩形。
    • 特点:围绕轮廓旋转找到,更贴合目标形状,计算复杂度高。

2. 如何找最小外接矩形?

  • 算法:旋转卡壳法(Rotating Calipers)

    核心思想:

    • 1. 计算轮廓的凸包(凸多边形)。

    • 2. 遍历凸包每条边作为基准边,找到距离最远的点。

    • 3. 计算当前边与最远点形成的矩形面积,记录最小值。

3. 实际应用流程 💐

step1 查找轮廓

contours, hierarchy = cv2.findContours(image, mode, method)

step2 计算最小外接矩形

rect = cv2.minAreaRect(cnt)

step3 转换为角点坐标

box = cv2.boxPoints(rect).astype(int)

step4 绘制

cv2.drawContours(image, contours, contourIdx, color, thickness)

Tips - 外接矩形

x, y, w, h = cv2.boundingRect(cnt)


It.2 最小外接圆 🎍

1. 算法原理

  • 数学-理论基础:希尔伯特圆定理

    对于平面上的任意三个不在同一直线上的点,存在一个唯一的圆同时通过这三个点,且该圆是最小面积的圆(即包含这三个点的圆中半径最小的圆,也称为最小覆盖圆)。

  • Welzl 算法:

    • 一种随机增量算法,用于计算给定点集的最小包围圆(可能由 2 个点(直径)或 3 个点确定)。
    • 递归选择点,逐步构建最小包围圆。
    • 若点不在当前圆内,则将该点作为新圆边界点,重新计算

2. 实际应用流程 💐

step1 获取最小外接圆

cv2.minEnclosingCircle(cnt)

step2 绘制

cv2.circle(img, center, radius, color, thickness)

It.3 代码模式 🎍

Study Example 🍀

import cv2
import numpy as np

# 1. 读取图像并预处理
img = cv2.imread("images/tu.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 2. 查找轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 3. 遍历每个轮廓
for cnt in contours:
    # 外接矩形
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
    
    # 最小外接矩形
    # 1. 计算最小外接矩形 -> 得到旋转矩形参数
    rect = cv2.minAreaRect(cnt)
    # 2. 获取角点数组 -> 得到旋转矩形的四个顶点坐标
    box = cv2.boxPoints(rect).astype(int)
    # 3. 绘制最小外接矩形
    cv2.drawContours(img, [box], 0, (0,255,0), 2)
    
    # 最小外接圆
    # 1.计算最小外接圆 -> 得到圆心和半径
    (cx,cy), r = cv2.minEnclosingCircle(cnt)
    # 2. 绘制最小外接圆
    cv2.circle(img, (int(cx),int(cy)), int(r), (0,0,255), 2)

# 显示图像
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV骨架提取实战:Guo-Hall与Zhang-Suen算法对比与工程优化 骨架提取是计算机视觉中图像形态学处理的关键技术,其核心原理是通过迭代删除边界像素,保留物体的拓扑中心线,从而将二值图像中的连通区域简化为单像素宽的骨架表示。这项技术的核心价值在于降维与特征抽象,它能将复杂的形状信息转化为更易分析和识别的线性结构。在工程实践中,骨架提取广泛应用于OCR字符识别前的预处理、电路板走线分析、生物医学图像中的血管或叶脉追踪,以及任何需要提取物体中心线或拓扑结构的场景。针对实际应用中常见的毛刺多、连接点断裂等鲁棒性问题,本文深入对比了Zhang-Suen快速并行算法与Guo-Hall 阅读详情

相关推荐

纯C++实现OCR:从原理到部署的完整实践指南

OCR(光学字符识别)是计算机视觉领域的关键技术,其核心原理在于将图像中的文本区域检测并转换为可编辑的字符序列。传统方法依赖图像处理和特征提取,而现代技术则基于深度学习模型,通过卷积神经网络(CNN)提取特征,并结合循环神经网络(RNN)或CTC损失进行序列识别,以实现更高的精度和鲁棒性。这项技术的价值在于将非结构化的图像信息转化为结构化文本,极大地提升了数据处理的自动化程度。其应用场景广泛,从文档数字化、车牌识别到工业自动化和移动端应用,无处不在。本文聚焦于利用纯C++实现OCR系统,通过集成ONNX R

weixin_30660027的博客 392

python半径为3圆形区域边界曲线_python opencv3 矩形 圆形边框

#coding:utf8importcv2importnumpy as np#读入图像img = cv2.imread("../data/mm1.jpg", cv2.IMREAD_UNCHANGED)#转化为分别率更低的图像img =cv2.pyrDown(img)#二值化, 黑白二值化ret, thresh =cv2.threshold(cv2.cvtColor(img.copy(), cv2...

weixin_39550172的博客 336

OpenCV实战系列——轮廓检测详解

在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。本节中,我们首先介绍如何提取图像中轮廓,然后讲解如何计算轮廓的形状描述符。

m0_58523831的博客 2万+

opencv[c++] findContours()轮廓特征分析大全(求面积、周长、几何矩、质心、凸包、最小外接矩形、最小外接三角形、最小外接椭圆等)---后续完善总结版本

在OpenCV里面利用findContours()函数和drawContours()函数实现这一功能。参数一: image,输入图像、八位单通道的,背景为黑色的二值图像。(一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像)参数二:contours,输出轮廓图像。是一个向量,向量的每个元素都是一个轮廓。因此,这个向量的每个元素仍是一个向量。即: vector<vector<Point> > contours; 参数三:hierarchy,输出各个轮廓

NCUTer 1万+

RPA实战:手把手教你打造抖音自动养号机器人(含避坑指南)

本文详细介绍了如何利用RPA技术从零构建一个智能化的抖音自动养号机器人。内容涵盖环境准备、核心工具选型、拟人化行为流程设计、代码实现模块拆解,并提供了关键的避坑指南与风控对抗策略,帮助开发者高效、稳定地实现账号自动化运营。

orange的博客 560

通达信主力检测利器

主力轨迹:100*EMA(EMA(MTM,N1),N1)/EMA(EMA(ABS(MTM),N1),N1),COLORWHITE;主力拉高:IF(VAR51<REF(VAR51,1),VAR51,0),COLORYELLOW,NODRAW;洗盘:IF(VAR5<REF(VAR5,1),VAR5,0),COLOR000079,NODRAW;主力进场:IF(VAR5>REF(VAR5,1),VAR5,0),COLORRED,NODRAW;MAZL:MA(主力轨迹,N2),COLORYELLOW;

zhibiaogong的博客 7461

【OpenCv】图像的轮廓查找

1 原理   边界或者轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 在机器视觉领域最常用的轮廓查找的算法之一是 Moore-Neighbor 算法,像素的摩尔邻域 PPP 是与该像素共享顶点或边的 888 个像素的集合。这些像素即 如下图所示的像素P1P1P1、P2P2P2、P3P3P3、P4P4P4、P5P5P5、P6P6P6、P7P7P7和P8P8P8。 摩尔邻域(也称为8 邻域或 间接邻域)是文献中经常出现的一个重要概念。

weixin_53598445的博客 7988

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 411

opencv官网教程: 轮廓检测详解

阈值化把图像中目标的边界转化为白色,所有边界像素有同样灰度值(“same intensity”),算法就可以从这些边界白色像素,检测到目标物体的边界(黑色像素作为背景会被忽略)顶层轮廓表示对象的外部边界,而内部轮廓表示对象内部的孔洞边界。RETR_TREE:提取所有轮廓并重建轮廓的整个层级结构,每个轮廓包含子类信息。轮廓:链接物体边界的所有点,通常,轮廓指的是有相同颜色和密度的边界像素。RETR_LIST :提取所有的轮廓,但不建立轮廓的整体层级关系。轮廓算法的准确率和质量高度取决于二进制图像的质量。

every place is the center of the universe 1381

Visionpro 使用CogPMAlignTool工具提取匹配轮廓点

【代码】Visionpro 使用CogPMAlignTool工具提取匹配轮廓点。

weixin_43947315的博客 2092

BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试

本文介绍了如何基于BGE-M3开源模型实现一个简单的二分类情感分析任务,展示了NLP中经典的“预训练 + 微调”范式。首先,加载预训练模型和分词器,并构建分类头整合到模型中。接着,进行数据预处理并构建DataLoader。然后,定义优化器、损失函数和训练循环,进行模型微调。微调过程中,可以选择基于[CLS] token的单特征提取或基于池化策略的多特征融合。最后,通过验证与推理评估模型性能,并导出ONNX模型以适应生产环境。BGE-M3在语义表征任务中表现优异,适合作为文本分类、语义搜索等下游任务的基础模型

大鹏的专栏 1404

基于opencv的简单图像轮廓形状识别(全网最简单最少代码)!!!

基于opencv的简单图像轮廓形状识别**(全网最简单最少代码)!!!** 可以直接跳到最后整体代码看一看是不是很少的代码!!!! 思路: 1. 数据的整合 2. 图片的灰度转化 3. 图片的二值转化 4. 图片的轮廓识别 5. 得到图片的顶点数 6. 依据顶点数判断图像形状 一、原数据的展示 图片文件共36个文件夹,每个文件夹有100张图片,共3600张图片。 每一个文件夹里都有形同此类的图形 二、数据的整合 对于多个文件夹,分析起来很不方便,所有决定将其都放在一个文件夹下进行分析,在python中具

WjoKe的博客 1万+

光模块封装工艺简介

光模块按照部件可以分为芯片、光器件、光模块三个层级;按照应用领域大概可分为电信应用、数通应用两个领域;按照内部器件的封装工艺可分为TO、Box、COB三大类。 但是,无论是哪种类型的光模块,其生产工艺基本上可以分为封装、测试两大块。   那什么叫做器件封装呢?我的理解器件封装就是利用胶水、焊料、机械、热量等手段把器件按照一定的先后次序结合形成一个整体的过程,就好像早上吃的煎饼,把面粉、鸡蛋、脆饼、烤肠、葱花等这些“器件”,按照一定的顺序,通过食用油、甜面酱、加热、卷起来等手段结合到一起,形成了美味的

qq_33253182的博客 2818

C#工业视觉实战:基于ONNX Runtime部署YOLO目标检测模型

在工业视觉与边缘计算领域,模型部署是算法落地的重要环节。ONNX(开放神经网络交换格式)作为一种跨框架的模型标准,解决了不同训练框架间的互操作性问题。其核心原理是通过统一的中间表示,将PyTorch、TensorFlow等框架训练的模型转换为通用格式,再由ONNX Runtime等推理引擎高效执行。这一技术价值在于实现了训练与部署的解耦,大幅简化了生产环境中的集成复杂度。在工业上位机、MES系统等典型应用场景中,C#/.NET因其与Windows系统及工业硬件的深度集成优势,常作为核心开发语言。然而,视觉算

weixin_34318272的博客 446

2025华为OD面试手撕代码真题目录及面试八股文

本专栏更新每年华为OD机试的高频手撕代码题,每个题目都会使用五种语言进行解答(C & C++& Java & Python & JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备

KJ.JK 5万+

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

OpenCV-35 查找轮廓

图像轮廓是具有的连续点的曲线,轮廓在形状分析和物体的检测识别中很有用。

weixin_47702917的博客 1771

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OpenCV(图像处理)-基于Python-轮廓查找

OpenCV轮廓查找,描画轮廓

羊羊羊 7941

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【opencv】49-OpenCv深入分析轮廓

opencv轮廓深入分析; 1. 多边形逼近 2. 获得轮廓的长度、矩形包围框、最小矩形包围框、最小包围圆、椭圆边框、最佳拟合线、轮廓的凸包;

sinat_41752325的博客 1161

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OpenCV—轮廓操作一站式详解:查找/筛选/绘制/形状描述与重心标注(C++版)

OpenCV—轮廓操作一站式详解:查找/筛选/绘制/形状描述与重心标注(C++版) 轮廓是定义或限定形状或对象的边或线,是机器视觉中的常用的概念,多用于目标检测、识别等任务。关于OpenCV轮廓操作,尤其是级别及如何使用轮廓级别进行筛选等问题,相关文章比较少,正好最近用到,因此将其总结成文。本文主要介绍OpenCV的查找轮廓函数findContours()绘制函数drawContours()...

iracer的博客 1万+

OpenCV之图像轮廓

什么是图像轮廓? 具有相同颜色(在彩色图片中)或强度(灰度图像要转变为二值化图像)的连续点的曲线 图像轮廓的作用: 1.可以用于图形分析 2.物体的识别与检测

go___on的博客 7406

6-OpenCVSharp--轮廓检测使用方法(轮廓查找、轮廓绘制、多边形逼近)

OpenCVSharp 提供了多种方法来检测、绘制和处理轮廓。用于查找轮廓,用于绘制轮廓,用于简化轮廓为多边形。轮廓的层次结构提供了嵌套轮廓的关系信息,这对处理复杂形状(如带有孔洞的对象)至关重要。通过合理选择这些函数的参数,可以实现高效的轮廓检测和分析。在实际应用中,轮廓检测常常与图像阈值化、形态学操作等结合使用,提供强大的图像分析能力。

weixin_45590420的博客 3204

OpenCV 图像轮廓检测

​ 本文是OpenCV图像视觉入门之路的第15篇文章,本文详细的介绍了图像轮廓检测的各种操作,例如:轮廓检索模式、轮廓逼近算子等操作。 图像轮廓是具有相同颜色或灰度的连续点的曲线,轮廓在形状分析和物体的检测和识别中很有用。图像轮廓的作用:图形分析、物体的检测和识别。 需要注意的是:为了检测的准确性,需要先对图像进行二值化或Canny操作; 画轮廓时会修改输入的图像,如果之后想继续使用原始图像,应该将原始图像存储到其他变量中。 ​

断点 5449

【OpenCV学习笔记23】- OpenCV中的轮廓 - 轮廓特征

简单实用OpenCV入门 - OpenCV中的轮廓 - 轮廓特征

移动的130 1283

OpenCV中的轮廓检测

OpenCV中简单的轮廓检测方法

2403_88243851的博客 731

opencv中轮廓检测以及轮廓近似的分析——轮廓近似原理,所有代码开源,所有函数的参数。

其中可以看到函数中有一个参数是需要我们自己进行计算的:指定的精度(epsilon),这个参数也是由前面的系数决定的,在示例中用的系数是0.01,实际上可以根据自己对精度的需求自行调整。cv2.RETR_CCOMP:检索所有的轮廓,并将他们分为两个等级的轮廓。上一层是外部边界,里一层是空洞的边界。cv2.CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分(轮廓的近似的实现:实际上轮廓的近似的实现就是将复杂的曲线用一些直线来代替,使图像更加的光滑和规则化。

Mr_zhubao的博客 4022
上一篇: [OpenCV] EP8_掩膜操作图像区域
下一篇: [OpenCV] EP7_直方图与形态学操作
HanIxan
博客等级 码龄6年 115粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值