本系列文章由 @yhl_leo 出品,转载请注明出处。

文章链接: http://blog.csdn.net/yhl_leo/article/details/52886351


Python code : yhlleo/textRegionMask


根据图像中文本字符的坐标信息,生成文本区域mask图像。如下图

文本字符信息记录格式为:

bjtextset01_0004.jpg
1
1 527.50 243.50 581.67 311.00 "2"

其中,bjtextset01_0004.jpg为图像名(全小写字符),紧接着的1为包含文本字符的数量,后面接着就是对应的文本字符的位置坐标527.50 243.50 581.67 311.00(格式为x, y, x, y,即两个顶点坐标),2为字符内容,该行最前面的1为标记符,可以忽略。

首先,读取文本内容:

import os
import copy as cp class DataGt(object):
"""docstring for DataGt"""
def __init__(self, fname, trlist):
super(DataGt, self).__init__()
self.fname = fname
self.trlist = trlist def loaddata(path):
fp = open(path).read().splitlines()
gt = DataGt([],[])
niter = 0
idx = 0
while niter < len(fp):
if '.jpg' in fp[idx]:
textlst = []
gt.fname.append(fp[idx]);
idx = idx + 1
num = int(fp[idx])
for i in range(num):
idx = idx + 1
if '1' in fp[idx] and '\"' in fp[idx]:
loc = fp[idx].split(' ')[1:5]
textlst.append(loc)
gt.trlist.append(textlst)
else:
idx = idx + 1
niter = idx
return gt

然后,绘制mask图:

import os
import cv2
import loadgt
import numpy as np def im_lists( path ):
return os.listdir(path); def path_insensitive(lst, fn):
for ln in lst:
if ln.lower() == fn.lower():
return ln
return None def genMask(gt, im_path, savepath):
num = len(gt.fname)
ims = im_lists(im_path)
for idx in range(num):
fn = path_insensitive( ims, gt.fname[idx] )
fname = os.path.join(im_path, fn)
sname = os.path.join(savepath, fn)
im = cv2.imread(fname)
size_im = im.shape
#print size_im
mask = np.zeros([size_im[0], size_im[1]], dtype=np.uint8)
for ls in gt.trlist[idx]:
mask[int(float(ls[1])):int(float(ls[3])), int(float(ls[0])): int(float(ls[2]))] = 255
cv2.imwrite(sname, mask, [cv2.cv.CV_IMWRITE_PNG_COMPRESSION, 0]) im_path = "./data"
savepath = "./mask"
gtpath = "./test.txt" gt = loadgt.loaddata(gtpath)
genMask(gt,im_path, savepath)

结果如图:

Image TextRegionMask

Text Region Mask的更多相关文章

  1. 【论文速读】Shangbang Long_ECCV2018_TextSnake_A Flexible Representation for Detecting Text of Arbitrary Shapes

    Shangbang Long_ECCV2018_TextSnake_A Flexible Representation for Detecting Text of Arbitrary Shapes 作 ...

  2. 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)

    Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...

  3. 论文阅读(Xiang Bai——【CVPR2015】Symmetry-Based Text Line Detection in Natural Scenes)

    Xiang Bai--[CVPR2015]Symmetry-Based Text Line Detection in Natural Scenes 目录 作者和相关链接 方法概括 创新点和贡献 方法细 ...

  4. 论文速读(Chuhui Xue——【arxiv2019】MSR_Multi-Scale Shape Regression for Scene Text Detection)

    Chuhui Xue--[arxiv2019]MSR_Multi-Scale Shape Regression for Scene Text Detection 论文 Chuhui Xue--[arx ...

  5. 【论文速读】Yuliang Liu_2017_Detecting Curve Text in the Wild_New Dataset and New Solution

    Yuliang Liu_2017_Detecting Curve Text in the Wild_New Dataset and New Solution 作者和代码 caffe版代码 关键词 文字 ...

  6. 【论文速读】Chuhui Xue_ECCV2018_Accurate Scene Text Detection through Border Semantics Awareness and Bootstrapping

    Chuhui Xue_ECCV2018_Accurate Scene Text Detection through Border Semantics Awareness and Bootstrappi ...

  7. 论文阅读(Weilin Huang——【arXiv2016】Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network)

    Weilin Huang——[arXiv2016]Accurate Text Localization in Natural Image with Cascaded Convolutional Tex ...

  8. halcon 如何把一个region截取出来保存为图像

    read_image(Image,'monkey') gen_circle(region,200,200,150) reduce_domain(Image,region,Mask) crop_doma ...

  9. Region Normalization for Image Inpainting, AAAI 2020

    论文:Region Normalization for Image Inpainting, AAAI 2020 代码:https://github.com/geekyutao/RN 图像修复的目的是重 ...

随机推荐

  1. 一键部署启动MySQL数据库服务器

    https://market.azure.cn/Vhd/Show?vhdId=9858&version=14359 产品详情 产品介绍MySQL是一个真正的多用户.多线程SQL数据库服务器.S ...

  2. SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group

    前言:   本节是整个系列的重点文章,到现在,读者应该已经对整个高可用架构有一定的了解,知道独立的SQL Server实例和基于群集的SQL Server FCI的区别.上一节已经介绍了如何安装SQL ...

  3. HDU 4055 Number String(DP计数)

    题意: 给你一个含n个字符的字符串,字符为'D'时表示小于号,字符为“I”时表示大于号,字符为“?”时表示大小于都可以.比如排列 {3, 1, 2, 7, 4, 6, 5} 表示为字符串 DIIDID ...

  4. python爬虫之路——基本文件操作

    介绍python如何打开文件和读取数据 新建TXT文档,为追加模式: f=open('c;/wendang/demo.txt','a+') content="abcdefg123456789 ...

  5. 给广大码农分享福利:一个业界良心的github仓库,中文计算机资料

    我今天查资料时无意发现的,https://github.com/CyC2018/CS-Notes 这个仓库包含了下列几个维度的计算机学习资料: 深受国内程序员喜爱,已经有超过3万多star了. 1. ...

  6. 【转】IOS开发—IOS 8 中设置applicationIconBadgeNumber和消息推送

    在IOS7中设置applicationIconBadgeNumber不会有什么问题,但是直接在IOS8中设置applicationIconBadgeNumber会报错 因为在IOS8中要想设置appl ...

  7. 2018.2.11 JS的定时器制作

    定时器 1.定时器定义 var time = window.setInterval("执行名词",间隔时间) 关闭定时器 clearInterval(定时器名称) 倒计时定时器 s ...

  8. java基础—java制作证书的工具keytool

    一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...

  9. flowvisor连接ovs

    1 开启flowvisor $ sudo -u flowvisor fvconfig generate /etc/flowvisor/config.json $ sudo /etc/init.d/fl ...

  10. ll1文法

    <program>-><external_declaration> | <program> <external_declaration> < ...