如下小程序为使用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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月17日
2024年11月17日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】