使用背景校正图像 (Python)

2024-04-06

我正在开发一个项目,对标签上的文本进行 OCR 操作。我的工作是对图像进行倾斜校正,使其可以用超正方体读取。

I have been using this approach https://www.pyimagesearch.com/2017/02/20/text-skew-correction-opencv-python/, that greyscales and thresholds the picture, gets the coordinates of the black pixels, draws a minAreaRect around it and then corrects the skew by the skew angle of this rectangle. This works on blindtext images, but not on images with background, like the presented image. There, it calculates a skew angle of 0.0 and does not rotate the image. (Expected result: 17°)

我怀疑发生这种情况是因为背景中有黑色像素。由于它们,minAreaRect 围绕整个图片,从而导致倾斜角度为 0。

我尝试进行背景去除,但找不到一种效果足够好的方法,以便只留下带有文本的标签

我尝试的另一种方法是通过 k 均值聚类对像素进行聚类。但即使手动选择一个好的 k,带有文本的簇仍然包含部分背景。

更不用说我仍然需要另一种方法来遍历所有集群并使用某种启发式来确定哪个集群是文本,哪个集群是背景,这将花费大量的运行时间。

对有背景的图像进行倾斜校正的最佳方法是什么?


您可以尝试基于深度学习natural scene text detection方法。通过这些方法,您可以获得每个文本的旋转边界框。基于这些得到覆盖所有框的旋转边界矩形。然后使用该矩形的 4 个角来校正图像。

RRPN_plusplus

基于样本图像RRPN_plusplus https://github.com/mjq11302010044/RRPN_plusplus似乎在极端角度上表现得很好。

EAST

Pyimagesearch 有一个教程EAST场景文本检测器。尽管不确定东方是否能在极端角度下表现良好。

https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text- detector/ https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/

图片来自,https://github.com/argman/EAST https://github.com/argman/EAST.

这些应该可以帮助您找到最近更好的存储库和方法,

  • https://github.com/topics/scene-text-detection https://github.com/topics/scene-text-detection
  • https://paperswithcode.com/task/scene-text-detection https://paperswithcode.com/task/scene-text-detection
  • https://paperswithcode.com/task/curved-text-detection https://paperswithcode.com/task/curved-text-detection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用背景校正图像 (Python) 的相关文章

  • 每月第 n 天运行 APScheduler 作业

    我正在寻找一个 APScheduler 触发器 它将在每月的第 n 天执行一项作业 例如 我想在每个月的第一个星期二运行一个作业 或者每个月的第一个和第三个周一 有没有人有一个触发器可以实现这一点 你可以almost使用 cron 调度程序
  • 查找具有不同强度/亮度的相似图像

    假设我有如下图像 我可以选择什么来比较两个图像之间的相似度 显然它们是相同的图像 只是亮度不同 我找不到任何可行的方法 目前我最好的选择是训练 cnn 或自动编码器并比较输出的特征向量 但这似乎有点矫枉过正 任何提示将不胜感激 相当强大的工
  • 在 Python 中静默打印 PDF

    我正在尝试使用 Python 打印 PDF 而不打开 PDF 查看器应用程序 Adobe Foxit 等 我还需要知道打印何时完成 以删除文件 Here http permalink gmane org gmane comp python
  • 为不带引号的函数获取字符串参数

    我有一个函数 用于从 URL 下载文件并将其写入磁盘 并施加特定的文件扩展名 目前 它看起来像这样 import requests import os def getpml url filename psc requests get url
  • 为什么 takewhile() 会跳过第一行?

    我有一个这样的文件 1 2 3 TAB 1 2 3 TAB 我想将 TAB 之间的行作为块读取 import itertools def block generator file with open file as lines for li
  • 如何使用 AdaBoost 进行特征选择?

    我想使用 AdaBoost 从大量 100k 中选择一组好的特征 AdaBoost 的工作原理是迭代功能集并根据功能的执行情况添加功能 它选择对现有特征集错误分类的样本表现良好的特征 我目前正在 Open CV 中使用CvBoost 我得到
  • Flask-admin 内联建模传递表单参数会抛出 AttributeError

    Flask 开发者们大家好 在 Flask admin 中 我目前尝试在模型视图中实现内联模型编辑 在模型方面 我有一个简单的树结构 表示一组内容页面 每个节点都有多个子节点以及与其关联的多个内容数据模型 模型被命名为ContentNode
  • 使用 PyQt 和 matplotlib 在可滚动小部件中显示多个绘图

    由于我没有得到答案this https stackoverflow com questions 12179893 creating a scrollable multiplot with pythons pylab我尝试用 PyQt 解决这
  • 根据另一个非索引数组中的值从 numpy 数组中选择元素

    假设我有以下两个数组 a array 1 L 74 423088306605 5 H 128 05441039929008 2 L 68 0581377353869 0 H 88 15726964130869 4 L 97 45015825
  • 使用 isdigit 表示浮点数?

    a raw input How much is 1 share in that company while not a isdigit print You need to write a number n a raw input How m
  • pandas dataframe 对列进行排序会引发索引上的 keyerror

    我有以下数据框 df peaklatency snr 0 52 99 0 0 1 54 15 62 000000 2 54 12 82 000000 3 54 64 52 000000 4 54 57 42 000000 5 54 13 7
  • Dataframe unstack 性能 - pandas

    我正在尝试拆开数据框 它工作正常 但问题是我正在处理 CSV 文件中的巨大数据集 约 10 亿 这是示例数据集 236539 48512569874 Name Danny 236539 48512569874 Class 12 236539
  • 与 GridSearchCV 的并行错误,与其他方法一起工作正常

    我使用 GridSearchCV 时遇到以下问题 它在使用时给我一个并行错误n jobs gt 1 同时n jobs gt 1与 RadonmForestClassifier 等单一模型配合良好 下面是一个显示错误的简单工作示例 train
  • 函数内部变量的赋值会改变外部的赋值 - Python

    我从使用 Matlab 转向使用 Python 使用函数时的变量赋值让我感到困惑 我有一个代码如下 a 1 1 1 def keeps x y x y 1 2 return y def changes x y x y 1 2 return
  • 使用字典时如何避免 KeyError?

    现在我正在尝试编写汇编程序 但我不断收到此错误 Traceback most recent call last File Users Douglas Documents NeWS py line 44 in if item in regis
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 将 tf.contrib.layers.xavier_initializer() 更改为 2.0.0

    我该如何改变 tf contrib layers xavier initializer tf 版本 gt 2 0 0 所有代码 W1 tf get variable W1 shape self input size h size initi
  • 使用 Python 3.x 基本获取 URL 的 HTML 正文

    我是Python新手 我对 Python 2 x 中的旧 urllib 和 urllib2 与 Python 3 中的新 urllib 之间的差异有点困惑 除此之外 我不确定数据在发送到 urlopen 之前何时需要编码 我一直在尝试使用
  • 加入语音频道(discord.py)

    当我尝试让我的机器人加入我的语音频道时 出现以下错误 await client join voice channel voice channel 产生错误的行 Traceback most recent call last File usr

随机推荐

  • Seaborn Jointplot 为每个类别添加颜色

    我想使用seaborn绘制2个变量的相关图jointplot 我尝试了很多不同的方法 但我无法根据类别为点添加颜色 这是我的代码 import numpy as np import seaborn as sns import matplot
  • 使用 EEPlus 读取 Excel 文件时,Excel 日期字段值与 C# dateTime 相差 1 天

    我在使用 EEPlus 库从 Excel xlsx 文件获取正确的日期字段值时遇到问题 特殊的问题是 在 excel 中我有例如1900 01 04 但在 C 中我得到 1900 01 03 我有一个想法 当我从 Excel 读取日期值时
  • puppeteer 无法在浏览器中加载 chrome 扩展

    这是我第一次使用 puppeteer 我想打开 google chrome 页面并导航到我已安装的 chrome 扩展 我尝试启用 chrome 扩展 但是当我在中运行脚本时headless false模式下浏览器会弹出 没有我的扩展程序
  • Multidex 后 Robolectric 单元测试失败

    因此 我最近将 robolectric 3 0 升级与我们的主线合并 这为我们的应用程序添加了 multidex 支持 不幸的是 这带来了不幸的副作用 导致我们的测试失败 无法运行 它们只会在第一次尝试安装 MultiDex 失败后停止 堆
  • vue:如何使传递给组件的对象具有反应性?

    Codepen 演示 https codepen io lzl124631x pen PayPVp editors 1010 我有一个组件有一个location对象为props 我传入的参数是locations index 这是从 a 中选
  • 有谁知道为什么我收到 HttpWebRequest 超时?

    我想知道你是否可以帮助我解决我遇到的错误 我创建了一个 HTTP 管理器 可以帮助我处理来自网站的 POSTing GETing 数据 直到最近我尝试混合使用两者时 它一直工作得很好 第一个循环一切正常 在第二个循环中它挂在 HttpWeb
  • 进行托管到本机互操作时操作系统加载程序锁定

    我正在使用以下命令将本机控件 C 加载到 WPF 控件中HwndHost http msdn microsoft com en us library system windows interop hwndhost 28v vs 110 29
  • 使用加速度计获取相对于地平面的设备平面

    假设 iPhone 放置在平坦的桌子上 我想确定桌面平面的角度 其中角度 0 意味着桌子完全垂直于重力矢量 我正在使用以下公式 radians atanf z sqrt x 2 y 2 在 h中 double accelerationXAv
  • 如何防止Scala编译时出现java.lang.OutOfMemoryError: PermGen space?

    我注意到我的 scala 编译器有一个奇怪的行为 编译类时偶尔会抛出 OutOfMemoryError 这是错误消息 info Compiling 1 Scala source to Users gruetter Workspaces sc
  • 我的自定义 AuthorizationPolicy.Evaluate() 方法永远不会触发

    我创建了一个具有自定义授权和身份验证的 wcf 服务 如您所见 public class AuthorizationPolicy IAuthorizationPolicy string id Guid NewGuid ToString pu
  • 为什么对数组原型的这种更改在我的 jQuery 插件中不起作用?

    我已将以下方法添加到数组原型中 Array prototype foreach function func for var i 0 i lt this length i if func this i false break return f
  • 什么是 Vue 3 组合 API 定义方法的类型安全方式

    我正在使用 Vue 的组合 API 在 Vue js 3 中 并主要在内部构建我的组件逻辑setup While 访问我自己的道具 https v3 vuejs org guide composition api setup html pr
  • 外设传输队列问题

    我正在开发一个围绕 CoreBluetooth 的简单包装器 用于将任何数据发送到任何设备 在开发过程中 我在框架中遇到了很多错误 它们非常烦人 为了使我的包装器稳定 我必须缩短一些功能以提高可靠性 现在我正在努力从外围设备发送数据 好的
  • 可以优化 std::visit 吗?

    使用时std visit std variant我在探查器输出中看到std detail variant gen vtable impl函数占用的时间最多 我做了这样的测试 3 class families all like this cl
  • RecyclerView onBindViewHolder 仅在 getItemViewType 更改时调用

    我有一个具有多种视图类型的视图持有者 滚动时onBindViewHolder仅在以下情况下调用getItemViewType改变值 这导致我的列表项无法正确更新 这是一个错误吗 或者我在这里做错了什么 这对于新的行为来说似乎很奇怪recyc
  • SQL查询使列中的所有数据都大写?

    我需要一个 SQL 查询来使列中的所有数据都大写 有任何想法吗 永恒的 UPDATE MyTable SET MyColumn UPPER MyColumn 暂时的 SELECT UPPER MyColumn AS MyColumn FRO
  • 如何重启虚拟机?

    如果我想运行另一个版本的tensorflow或keras 那么我可以安装特定版本的相同版本 但之后我想回滚到最新版本 并使用最新版本 例如1 6 0rc 再次安装tensorflow 它正在安装 但是当我再次检查版本时 它仍然指向早期版本的
  • 迦太基和谷歌地图

    是否可以通过 Carthage 安装 GoogleMap SDK 我只看到了 Cocoapods 的教程 或者如果我使用 Carthage 我只能手动安装 根据迦太基文档 https github com Carthage Carthage
  • 在Python中重命名目录中的多个文件

    我正在尝试使用 Python 重命名目录中的一些文件 假设我有一个名为CHEESE CHEESE TYPE 并想要删除CHEESE 所以我得到的文件名是CHEESE TYPE 我正在尝试使用os path split但它不能正常工作 我也考
  • 使用背景校正图像 (Python)

    我正在开发一个项目 对标签上的文本进行 OCR 操作 我的工作是对图像进行倾斜校正 使其可以用超正方体读取 I have been using this approach https www pyimagesearch com 2017 0