检测后如何从图像中提取文本区域

2024-02-06

我正在尝试使用 opencv python 从图像中提取所有文本区域。我已成功检测到文本区域,但无法提取它。

我提取了文本区域的较小子矩阵,但无法将它们聚合成我们在图像中视为文本区域的更大矩阵。

import numpy as np
import cv2
from imutils.object_detection import non_max_suppression
import matplotlib.pyplot as plt
%matplotlib inline
from PIL import Image
# pip install imutils

image1 = cv2.imread("lebron_james.jpg") 
#image1=cv2.cvtColor(image1,cv2.COLOR_RGB2BGR)
(height1, width1) = image1.shape[:2]
size = 320
(height2, width2) = (size, size)  
image2 = cv2.resize(image1, (width2, height2))  

net = cv2.dnn.readNet("frozen_east_text_detection.pb")
blob = cv2.dnn.blobFromImage(image2, 1.0, (width2, height2), (123.68, 116.78, 103.94), swapRB=True, crop=False)
net.setInput(blob)

(scores, geometry) = net.forward(["feature_fusion/Conv_7/Sigmoid", "feature_fusion/concat_3"])
(rows, cols) = scores.shape[2:4]  # grab the rows and columns from score volume
rects = []  # stores the bounding box coordiantes for text regions
confidences = []  # stores the probability associated with each bounding box region in rects

for y in range(rows):
    scoresdata = scores[0, 0, y]
    xdata0 = geometry[0, 0, y]
    xdata1 = geometry[0, 1, y]
    xdata2 = geometry[0, 2, y]
    xdata3 = geometry[0, 3, y]
    angles = geometry[0, 4, y]

    for x in range(cols):

        if scoresdata[x] < 0.5:  # if score is less than min_confidence, ignore
            continue
        # print(scoresdata[x])
        offsetx = x * 4.0
        offsety = y * 4.0
        # EAST detector automatically reduces volume size as it passes through the network
        # extracting the rotation angle for the prediction and computing their sine and cos

        angle = angles[x]
        cos = np.cos(angle)
        sin = np.sin(angle)

        h = xdata0[x] + xdata2[x]
        w = xdata1[x] + xdata3[x]
        #  print(offsetx,offsety,xdata1[x],xdata2[x],cos)
        endx = int(offsetx + (cos * xdata1[x]) + (sin * xdata2[x]))
        endy = int(offsety + (sin * xdata1[x]) + (cos * xdata2[x]))
        startx = int(endx - w)
        starty = int(endy - h)

        # appending the confidence score and probabilities to list
        rects.append((startx, starty, endx, endy))
        confidences.append(scoresdata[x])


# applying non-maxima suppression to supppress weak and overlapping bounding boxes
boxes = non_max_suppression(np.array(rects), probs=confidences)

iti=[]
rW = width1 / float(width2)
rH = height1 / float(height2)
for (startx, starty, endx, endy) in boxes:
    startx = int(startx * rW)
    starty = int(starty * rH)
    endx = int(endx * rW)
    endy = int(endy * rH)

    cv2.rectangle(image1, (startx, starty), (endx, endy), (255, 0,0), 2)

#print(image1)
plt.imshow(image1)
cv2.waitKey(0)

我已经尝试过这个:

rects.append((startx, starty, endx, endy))
confidences.append(scoresdata[x])
it=image1[np.ix_([startx,endx],[starty,endy])]
pt=Image.fromarray(it)
fig.add_subplot(1, cols, x)
print(it)
plt.imshow(it)

您可能在裁剪图像中混合列/行。您可以尝试使用此方法进行裁剪:

it=image1[starty:endy, startx:endx]

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

检测后如何从图像中提取文本区域 的相关文章

  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 如何获取 razor 视图引擎中集合中项目的元数据?

    我有一个项目写在C 位于 ASP NET MVC 5 框架的顶部 我试图将我的视图与视图模型分离 以便我可以使我的视图可重用 随着大量使用EditorTemplates我能够通过评估来创建所有标准视图 即创建 编辑和详细信息 ModelMe
  • 对大于 RAM 大小的数据进行排序

    这是谷歌面试问题 给定 2 台机器 每台机器都有 64 GB RAM 包含所有整数 8 字节 对整个 128 GB 数据进行排序 您可以假设有少量额外的 RAM 扩展此功能以对存储在 1000 台机器中的数据进行排序 我想出了外部排序 我们
  • Strongloop/loopback - 维护多个版本的 API

    我是第一次使用strongloop loopback 有一些基本的指导online https docs strongloop com display public LB Versioning your API用于 API 版本控制 var
  • 具有属性的 UML 建模枚举

    我想使用 Java 枚举 enum 创建一个 UML 图 它具有一个或多个属性 但我对如何做到这一点感到困惑 例如 可以这样声明枚举 public enum Enumeration type LITERAL A attr1 value at
  • ANSI C 编译器可以删除延迟循环吗?

    考虑 ANSI C 中的 while 循环 其唯一目的是延迟执行 unsigned long counter DELAY COUNT while counter 我已经看到这在嵌入式系统上被大量使用来强制延迟 例如 没有sleep功能和定时
  • C++ 构造函数中前导下划线的含义是什么?

    好吧 我不是一个非常有经验的 C 程序员 但我想知道以下构造函数的参数中下划线的意义是什么 class floatCoords public floatCoords float x float y float width float hei
  • PDO 返回所有行[重复]

    这个问题在这里已经有答案了 所以 现在我有一个 PHP 函数 它利用 PDO 返回特定表的第一行 这很好用 但我想返回所有信息 同时能够组织所有信息 我有桌子zip admins我正在尝试返回first name and last name
  • 使用 Google Maps API v3 循环遍历标记问题

    我不知道为什么这不起作用 我没有任何错误 但发生的情况是 无论我单击哪个标记 它总是单击最后一个标记 我不确定为什么 因为 the marker 的设置方式相同 我怎样才能解决这个问题 使用新的 jQuery XML 进行了更新 funct
  • 如何递归删除 UNIX 目录中的所有隐藏文件?

    我已经搜索了一段时间 但似乎无法得到简洁的解决方案 我有一台 Mac 其中有一个文件夹 我想清除该文件夹中的所有隐藏文件 目录 任何隐藏的内容 它曾经是一个包含大量 metadata svn 内容的 Eclipse 工作区 我很乐意将其全部
  • JDBC 驱动程序是否应该包含在 WAR 中?

    我们正在开发一个商业软件产品 它支持 Oracle MySQL 和 SQL Server 后端 我们也使用 H2 进行测试 我们使用特定版本的 JDBC 驱动程序针对这些不同的数据库进行集成测试 Maven 完美地处理了这一切 当将应用程序
  • HTTPS 使用非对称加密还是对称加密?

    我今天上午都在搜索 但我找到了一些网站 据说数据是 通过使用 TLS 协议的非对称加密发送的 然后我发现相反 请你告诉我哪个是真的 谢谢 有谁知道逐步解释 tls 协议通过 https 握手的指南吗 最好的答案是两者兼而有之 TLS 使用非
  • Dart HttpRequest 轮询

    我有一个网络应用程序 它有一个计时器 每 3 秒触发一次轮询以获取数据 它工作正常大约 2 5 分钟 然后 Chromium 崩溃了 我的请求 Dart 看起来像这样 HttpRequest getString data get load
  • BigQuery:404“表被截断。”当在截断之后插入时

    我通过执行此处描述的 queryJob 来截断我的表 https cloud google com bigquery docs quickstarts quickstart client libraries https cloud goog
  • 将命令与 TabItem 一起使用

    我想在选择 TabControl 的 TabItem 时调用命令 有没有办法在不破坏 MVVM 模式的情况下做到这一点 Use an 附加命令行为 http marlongrech wordpress com 2008 12 13 atta
  • ResultSetImpl 抛出 NullPointerException

    我正在使用 mysql 5 1 18 连接器运行 mysql 5 5 一个简单的样式查询 select from my table where column a in aaa bbb and column b 1 从java应用程序中执行
  • 如何在 Mountebank 中使用代理记录请求和响应?

    我正在使用创建一个冒名顶替者进程骗子 http www mbtest org docs gettingStarted并想要记录请求和响应 为了创建一个http imposter 我使用了以下命令CURL命令如其文档中所述 curl i X
  • 根据后代节点的属性选择节点的最佳 LINQ-to-XML 查询?

    我有以下 XML 文档
  • 属性的延迟加载

    如何实现对象属性的延迟加载 即如果访问属性但尚不存在 则调用一些应该加载这些属性的对象方法 我的第一次尝试是 def lazyload cls def getattr obj attr if loaded not in obj dict o
  • EF Code First 和 SQL Server 视图

    在 ASP NET MVC3 中 使用 EF Code First 时如何显示 SQL Server 视图中的数据 只需使用视图的名称作为表的名称即可
  • 检测后如何从图像中提取文本区域

    我正在尝试使用 opencv python 从图像中提取所有文本区域 我已成功检测到文本区域 但无法提取它 我提取了文本区域的较小子矩阵 但无法将它们聚合成我们在图像中视为文本区域的更大矩阵 import numpy as np impor