Text Region Mask
本系列文章由 @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的更多相关文章
- 【论文速读】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 作 ...
- 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)
Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...
- 论文阅读(Xiang Bai——【CVPR2015】Symmetry-Based Text Line Detection in Natural Scenes)
Xiang Bai--[CVPR2015]Symmetry-Based Text Line Detection in Natural Scenes 目录 作者和相关链接 方法概括 创新点和贡献 方法细 ...
- 论文速读(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 ...
- 【论文速读】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版代码 关键词 文字 ...
- 【论文速读】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 ...
- 论文阅读(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 ...
- halcon 如何把一个region截取出来保存为图像
read_image(Image,'monkey') gen_circle(region,200,200,150) reduce_domain(Image,region,Mask) crop_doma ...
- Region Normalization for Image Inpainting, AAAI 2020
论文:Region Normalization for Image Inpainting, AAAI 2020 代码:https://github.com/geekyutao/RN 图像修复的目的是重 ...
随机推荐
- Elasticsearch-基本操作2
Elasticsearch版本:6.0 为了避免并发修改的冲突问题,数据库中,经常用悲观锁和乐观锁来控制并发问题,而Elasticsearch使用乐观锁.如果源数据在读写过程中被修改,更新将失败,应用 ...
- [VC]在VC++中实现让程序只运行一个实例的方法且实现该实例
方法一: 有时候在开发应用程序时,希望控制程序运行唯一的实例.例如,最常用的mp3播放软 件Winamp,由于它需要独占计算机中的音频设备,因此该程序只允许自身运行唯一的一个例程.在Visual C+ ...
- CodeForces 77C Beavermuncher-0xFF (树形dp)
不错的树形dp.一个结点能走多次,树形的最大特点是到达后继的路径是唯一的,那个如果一个结点无法往子结点走,那么子结点就不用考虑了. 有的结点不能走完它的子结点,而有的可能走完他的子节点以后还会剩下一些 ...
- Android(java)学习笔记118:BroadcastReceiver之 外拨电话的广播接收者
1. 外拨电话的广播接收者: 首先我们示例工程一览表如下: (2)首先我们还是买一个收音机,定义一个OutCallReceiver继承自BroadcastReceiver,onReceive()方法中 ...
- [论文理解] Connectionist Text Proposal Network
Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...
- intellij idea自定义快捷键
intellij idea自定义快捷键比较简单,自带. 首先进入idea,File-->Settings-->Live Templates. 点击右上方的“+”,第一次需要创建一个分组. ...
- Ubuntu下手动安装NextCloud
安装环境:阿里云VPS Ubuntu 16.04 一. 安装Apache2 sudo apt-get install apache2 安装完成后,浏览器访问http://your ip/,出现It ...
- Harvest of Apples
问题 B: Harvest of Apples 时间限制: 1 Sec 内存限制: 128 MB提交: 18 解决: 11[提交] [状态] [讨论版] [命题人:admin] 题目描述 Ther ...
- js 去除数组中的空值以及数组判断是否有重复数据
1.判断是否有重复数据 function isRepeat(array){ var hash = {}; for(var i in array) { if(array[i]!="" ...
- CMDB API验证
CMDB API验证 为什么做API验证 API验证是防止数据在传输的过程中,保证数据不被篡改 如何设计的API验证 灵感来源于Torando中加密Cookie的源码,主要是生成加密的随机字符串. M ...