【Python】OpenCV-图像轮廓检测初学

这篇具有很好参考价值的文章主要介绍了【Python】OpenCV-图像轮廓检测初学。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像轮廓检测初学

在图像处理领域中,轮廓检测是一项重要的任务,用于寻找并标定图像中的物体边缘。本文将介绍如何使用OpenCV库进行图像轮廓检测,并展示一个简单的示例代码。代码中的注释将详细解释每一步的操作。

1. 引言

图像轮廓检测是图像处理中的一项关键技术,可用于检测物体的形状、边界等信息。在本文中,我们将演示如何使用OpenCV进行图像轮廓检测,并通过示例代码展示这一过程。

2. 代码示例

以下是一个使用OpenCV的示例代码,演示了图像轮廓检测的过程:

import cv2
import numpy as np

# 读取图像
src_img = cv2.imread("demo.png") # 例如简单的5个英文验证码图片

# 将图像转换为灰度
img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)

# 阈值化处理,生成二值图像
thresh, img = cv2.threshold(img, 190, 255, cv2.THRESH_BINARY)  # 白底黑字
print("阈值1:", thresh)

thresh, img = cv2.threshold(img, 190, 255, cv2.THRESH_BINARY_INV)  # 黑底白字
print("阈值2:", thresh)

thresh, img = cv2.threshold(img, 1, 255, cv2.THRESH_OTSU)  # 自动寻找阈值
print("自动阈值:", thresh)

# 膨胀操作,填充小的空洞(去掉周围的点点)
kernel = np.ones([5, 5])
img = cv2.dilate(img, kernel)

# 腐蚀操作,消除噪声(把有用的英文扩大)
kernel = np.ones([7, 7])
img = cv2.erode(img, kernel)

# 寻找图像轮廓
contours, _ = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 计算轮廓面积
areas = []
for c in contours:
    area = cv2.contourArea(c)
    areas.append(area)
areas = np.array(areas)
print("轮廓面积:", areas)

# 获取面积最大的5个轮廓
index = np.argsort(areas)[-6:-1] # 不是[-5:],因为最大的面积是边框 
print("前5个轮廓的索引:", index)

# 提取前5个轮廓
top5_contours = []
for i in range(5):
    top5_contours.append(contours[index[i]])

# 在原图上绘制矩形框
for c in top5_contours:
    # 获取矩形框坐标
    x, y, w, h = cv2.boundingRect(c)
    # 绘制矩形框
    cv2.rectangle(src_img, [x, y, x + w, y + h], [0, 0, 255], 2)

# 显示结果图像
cv2.imshow("demo", src_img)
cv2.waitKey(0)
  • 原图
    【Python】OpenCV-图像轮廓检测初学,Python,python,opencv,开发语言
  • 识别并画框
    【Python】OpenCV-图像轮廓检测初学,Python,python,opencv,开发语言

3. 代码解释

3.1 图像预处理

首先,读取图像并将其转换为灰度图像。接着,通过阈值化处理得到二值图像,其中包括白底黑字和黑底白字两种处理方式。

3.2 形态学操作

通过膨胀(dilate)和腐蚀(erode)操作,对图像进行形态学处理,以填充小的空洞并消除噪声。

3.3 轮廓检测

使用OpenCV的findContours函数寻找图像中的轮廓,并计算每个轮廓的面积。

3.4 提取前5个轮廓

通过面积排序,提取前5个面积最大的轮廓。

3.5 绘制矩形框

在原图上绘制包围每个轮廓的矩形框,以突显检测到的物体。

4. 结论

通过上述代码示例,我们演示了如何使用OpenCV进行图像轮廓检测,并通过一系列预处理操作找到并突显图像中的主要物体。轮廓检测在计算机视觉和图像处理中有着广泛的应用,可用于目标检测、图像分割等任务。详细的注释帮助理解代码的每一步操作,为初学者提供了一个学习的起点。

代码参考源自:Shady的混乱空间文章来源地址https://www.toymoban.com/news/detail-832741.html

到了这里,关于【Python】OpenCV-图像轮廓检测初学的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV 图像轮廓检测

            本文是OpenCV图像视觉入门之路的第15篇文章,本文详细的介绍了图像轮廓检测的各种操作,例如:轮廓检索模式、轮廓逼近算子等操作。         图像轮廓是具有相同颜色或灰度的连续点的曲线,轮廓在形状分析和物体的检测和识别中很有用。图像轮廓的作用

    2024年01月25日
    浏览(51)
  • opencv图像轮廓检测

    效果展示: 代码部分:

    2024年02月12日
    浏览(53)
  • OpenCV图像处理——轮廓检测

    2024年02月13日
    浏览(49)
  • opencv(七)Canny边缘检测和图像轮廓检测

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 1、检测步骤 1)使用高斯滤波器,以平滑图像,滤掉噪声。 2)计算图像中每个像素点的梯度强度和方向 3)应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应 4)应用双阈值(

    2024年02月04日
    浏览(54)
  • opencv python 实现Canny检测后不连续不封闭轮廓的闭合

    Canny检测后轮廓的闭合在网上看了一些相关文章后总结出有以下方法: 1、 使用闭运算等形态学操作来对轮廓进行处理,但作为像素点级别 的形态学操作往往不能满足要求,如:两条轮廓线相距仅为一个像素,在进行闭运算操作时会使这两条轮廓粘连在一起。 2、 对于规则的

    2024年04月14日
    浏览(46)
  • 如何在OpenCV中实现图像的边缘检测和轮廓提取?opencv教程

    在OpenCV中,可以使用边缘检测算法和轮廓提取函数来实现图像的边缘检测和轮廓提取。以下是一种常用的方法: 边缘检测: 在OpenCV中,常用的边缘检测算法包括Canny边缘检测和Sobel算子。 Canny边缘检测: Canny边缘检测是一种广泛使用的边缘检测算法,它能够有效地检测出图像

    2024年02月15日
    浏览(36)
  • 【OpenCV-Python】——边缘和轮廓&Laplacian/Sobel/Canny边缘检测&查找/绘制轮廓及轮廓特征&霍夫直线/圆变换

    目录 前言: 1、边缘检测 1.1 Laplacian边缘检测  1.2 Sobel边缘检测  1.3 Canny边缘检测 2、图像轮廓 2.1 查找轮廓  2.2 绘制轮廓 2.3 轮廓特征 3、霍夫变换 3.1 霍夫直线变换  3.2 霍夫圆变换 总结: 图像的边缘是指图像中灰度值急剧变化的位置,边缘检测的目的是为了绘制边缘线条。

    2024年01月23日
    浏览(48)
  • OpenCV 项目开发实战--对图像中的斑点进行检测(Python、C++代码实现)

    Blob 是图像中一组连接的像素,它们共享一些共同的属性(例如,灰度值)。在上图中,暗连接区域是斑点,斑点检测旨在识别和标记这些区域。 文末附相关测试代码的下载链接 OpenCV 提供了一种基于不同特征检测和过滤斑点的便捷方法。让我们从最简单的例子开始 Python

    2024年02月14日
    浏览(56)
  • C++如何用OpenCV中实现图像的边缘检测和轮廓提取?

    主要实现代码:

    2024年02月07日
    浏览(40)
  • opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)

    矩特征(Moments Features)是用于图像分析和模式识别的一种特征表示方法,用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以表示图像的中心、尺度

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包