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

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(使用前将#替换为@)

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

  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • OpenCV 2.4.3rc 和 CUDA 4.2:“OpenCV 错误:没有 GPU 支持”

    我在这张专辑中上传了几张截图 https i stack imgur com TELST jpg https i stack imgur com TELST jpg 我正在尝试在 Visual Studio 2008 中的 OpenCV 中
  • 当x轴不连续时如何删除冗余日期时间 pandas DatetimeIndex

    我想绘制一个 pandas 系列 其索引是无数的 DatatimeIndex 我的代码如下 import matplotlib dates as mdates index pd DatetimeIndex 2000 01 01 00 00
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • 如何获取 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