如下小程序为使用python+opencv将表格图片,按照表格进行分割,并识别分割后的子图片中的文字,希望对需要的小伙伴有一些些帮助。具体的实现见如下代码。
# -*- coding: utf-8 -*- """ Created on Tue May 28 19:23:19 2019 将图片按照表格框线交叉点分割成子图片(传入图片路径) @author: hx """ import cv2 import numpy as np import pytesseract image = cv2.imread('C:/Users/Administrator/Desktop/7.jpg', 1) #灰度图片 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #二值化 binary = cv2.adaptiveThreshold(~gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 35, -5) #ret,binary = cv2.threshold(~gray, 127, 255, cv2.THRESH_BINARY) cv2.imshow("二值化图片:", binary) #展示图片 cv2.waitKey(0) rows,cols=binary.shape scale = 40 #识别横线 kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(cols//scale,1)) eroded = cv2.erode(binary,kernel,iterations = 1) #cv2.imshow("Eroded Image",eroded) dilatedcol = cv2.dilate(eroded,kernel,iterations = 1) cv2.imshow("表格横线展示:",dilatedcol) cv2.waitKey(0) #识别竖线 scale = 20 kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,rows//scale)) eroded = cv2.erode(binary,kernel,iterations = 1) dilatedrow = cv2.dilate(eroded,kernel,iterations = 1) cv2.imshow("表格竖线展示:",dilatedrow) cv2.waitKey(0) #标识交点 bitwiseAnd = cv2.bitwise_and(dilatedcol,dilatedrow) cv2.imshow("表格交点展示:",bitwiseAnd) cv2.waitKey(0) # cv2.imwrite("my.png",bitwiseAnd) #将二值像素点生成图片保存 #标识表格 merge = cv2.add(dilatedcol,dilatedrow) cv2.imshow("表格整体展示:",merge) cv2.waitKey(0) #两张图片进行减法运算,去掉表格框线 merge2 = cv2.subtract(binary,merge) cv2.imshow("图片去掉表格框线展示:",merge2) cv2.waitKey(0) #识别黑白图中的白色交叉点,将横纵坐标取出 ys,xs = np.where(bitwiseAnd>0) mylisty=[] #纵坐标 mylistx=[] #横坐标 #通过排序,获取跳变的x和y的值,说明是交点,否则交点会有好多像素值值相近,我只取相近值的最后一点 #这个10的跳变不是固定的,根据不同的图片会有微调,基本上为单元格表格的高度(y坐标跳变)和长度(x坐标跳变) i = 0 myxs=np.sort(xs) for i in range(len(myxs)-1): if(myxs[i+1]-myxs[i]>10): mylistx.append(myxs[i]) i=i+1 mylistx.append(myxs[i]) #要将最后一个点加入 i = 0 myys=np.sort(ys) #print(np.sort(ys)) for i in range(len(myys)-1): if(myys[i+1]-myys[i]>10): mylisty.append(myys[i]) i=i+1 mylisty.append(myys[i]) #要将最后一个点加入 print('mylisty',mylisty) print('mylistx',mylistx) #循环y坐标,x坐标分割表格 for i in range(len(mylisty)-1): for j in range(len(mylistx)-1): #在分割时,第一个参数为y坐标,第二个参数为x坐标 ROI = image[mylisty[i]+3:mylisty[i+1]-3,mylistx[j]:mylistx[j+1]-3] #减去3的原因是由于我缩小ROI范围 cv2.imshow("分割后子图片展示:",ROI) cv2.waitKey(0) #special_char_list = '`~!@#$%^&*()-_=+[]{}|\\;:‘',。《》/?ˇ' pytesseract.pytesseract.tesseract_cmd = 'E:/Tesseract-OCR/tesseract.exe' text1 = pytesseract.image_to_string(ROI) #读取文字,此为默认英文 #text2 = ''.join([char for char in text2 if char not in special_char_list]) print('识别分割子图片信息为:'+text1) j=j+1 i=i+1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“python opencv将表格图片按照表格框线分割和识别”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年10月06日
2024年10月06日
- 群星《前途海量 电影原声专辑》[FLAC/分轨][227.78MB]
- 张信哲.1992-知道新曲与精丫巨石】【WAV+CUE】
- 王翠玲.1995-ANGEL【新艺宝】【WAV+CUE】
- 景冈山.1996-我的眼里只有你【大地唱片】【WAV+CUE】
- 群星《八戒 电影原声带》[320K/MP3][188.97MB]
- 群星《我的阿勒泰 影视原声带》[320K/MP3][139.47MB]
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[320K/MP3][148.91MB]
- 刘雅丽.2001-丽花皇后·EMI精选王【EMI百代】【FLAC分轨】
- 齐秦.1994-黄金十年1981-1990CHINA.TOUR.LIVE精丫上华】【WAV+CUE】
- 群星.2008-本色·百代音乐人创作专辑【EMI百代】【WAV+CUE】
- 群星.2001-同步过冬AVCD【环球】【WAV+CUE】
- 群星.2020-同步过冬2020冀待晴空【环球】【WAV+CUE】
- 沈雁.1986-四季(2012梦田复刻版)【白云唱片】【WAV+CUE】
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[FLAC/分轨][257.88MB]
- 《国语老歌 怀旧篇 3CD》[WAV/分轨][1.6GB]