Python计算机视觉:提取手绘图像中的封闭图形

在本文中,将探讨如何使用Python计算机视觉领域提取手绘图像中的封闭图形,例如流程图中的图形。将通过以下步骤实现这一目标:

  1. 二值化
  2. 字符和噪声移除(连通组件分析)
  3. 填充
  4. 矩形提取

如果急需获取代码,可以直接跳转到文章底部复制代码,并不要忘记点赞和评论。本教程将帮助定位给定图像中的所有封闭图形。一旦获取了这些图形的位置,就可以裁剪这些图形,并应用深度学习模型来获取图形中的文本。通过这种方式,将能够从手绘图像中提取文本。

如果有一些预定义的结构,比如流程图从上到下或从左到右的布局,可以利用这些属性以相同的格式放置文本,或相应地执行任务。

1.a 给定的样本图像

将多色调图像转换为双色调图像(即黑白图像)的过程称为二值化。对于在计算机中创建的具有完美黑白像素值的图像,这种技术很简单,如1.a图所示。已经成功地将图像1.a二值化为图像2.a,如下所示。

如果使用的是设备拍摄的图像,必须应用不同的阈值处理原则。在OpenCV中有多种阈值处理技术,这里只讨论一种,即简单阈值处理。

在这种技术中,对于每个像素,都应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则,将其设置为最大值(对于情况是255)。

# 导入必要的库 import cv2 import numpy as np # 读取图像 image = cv2.imread('path_to_image') # 转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用简单阈值处理 _, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 显示二值化后的图像 cv2.imshow('Binary Image', binary) cv2.waitKey(0) cv2.destroyAllWindows()

以上代码展示了如何使用OpenCV库读取图像,将其转换为灰度图,然后应用简单阈值处理以实现二值化。这种方法适用于具有明显黑白对比的图像。对于实际拍摄的图像,可能需要调整阈值或使用更复杂的阈值处理方法。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485