把图片中的字符分离出一张张字符图片(缺陷:字符不能重合)

# -*- coding:utf-8 -*-
import numpy as np
import cv2def car():img = cv2.imread("C:\\Users\\Administrator.000\\Desktop\\a.png")grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )     #转换颜色空间,转为灰度图#img2 = copy.copy(grayImage)img2 = grayImage.copy()cv2.threshold(grayImage,200,255,cv2.THRESH_BINARY,img2)#二值化  阈值是100,大于100为白色cv2.imshow("w", grayImage)cv2.waitKey(1000)cv2.imshow("w",img2)cv2.waitKey(1000)black = []#每一列黑点的数量white = []#每一行黑点的数量row = img2.shape[0]col = img2.shape[1]for i in range(col):blackCnt = 0whiteCnt = 0for j in range(row):if img2[j][i] == 0:blackCnt +=1else:whiteCnt +=1black.append(blackCnt)white.append(whiteCnt)blackMax = max(black)#黑点最大数量whiteMax = max(white)#白点最大数量#黑底is_black_backgroud = True if whiteMax < blackMax else Falseif (sum(black) if is_black_backgroud else sum(white)) == row * col:#都是底色,没有字符print('no char')#去除字符顶部和底部的空白def find_end(row,col):black = []for i in range(row):blackCnt = 0for j in range(col):if img2[i][j] == 0:blackCnt += 1black.append(blackCnt)start_row = 0 #字符开始行end_row = row #字符结束行for i in range(row):# 这一行全是底色if (black[i] if is_black_backgroud else (col-black[i]) == col):continueelse:start_row = ibreakfor i in range(start_row+1,row):# 这一行全是底色if (black[i] if is_black_backgroud else (col-black[i]) == col):end_row = ibreakreturn start_row,end_row#分割字符   缺陷:字符不能重合def find_end2(start_col,col):end_col = start_col#找到字符开始的列temp = -1for i in range(start_col, col-1):if (white[i] if is_black_backgroud else black[i]) > (0.1 * (whiteMax if is_black_backgroud else blackMax)):temp = iprint('start:',i)breakif temp == -1:return start_col,end_colelse:start_col = temp# 找到字符结束的列for i in range(start_col + 1, col - 1):# 底部的色彩 占这一列的 色彩的 95%   ---》  分割字符结束if (black[i] if is_black_backgroud else white[i]) > (0.9 * (blackMax if is_black_backgroud else whiteMax)):#下一列还有字体颜色if (white[i+1] if is_black_backgroud else black[i+1]) > (0.1 * (whiteMax if is_black_backgroud else blackMax)):continueend_col = iprint('end:',i)breakreturn start_col,end_colstart = 0end = 0top, botton = find_end(row, col)i = 0while i < col-1:start,end = find_end2(start,col)i = endif start == end:#没找到字符breakif end - start > 10:print("ok")imggg = img2[top:botton,start:end]cv2.imshow('1',imggg)cv2.waitKey(2000)else:print("error")start = end + 1cv2.waitKey(999999)if __name__ == '__main__':car()

python+opencv图片分割字符相关推荐

  1. python将图片转换为字符_python如何将图片转换为字符图片

    简介 一个简单的python程序,将图片转换为字符图片. (为了简便,很多参数写死了,自己看着改吧. (←∀←)) 正文 原图(侵删) 结果图 源码 [更多细节]-->戳这里 #-*- codi ...

  2. python opencv 图片/视频 拼接

    python opencv 图片/视频 拼接 # coding: utf-8 # 像写诗一样写代码 import numpy as np import cv2img_A_path = "C: ...

  3. 2020-12-03 Python OpenCV: 图片的裁剪

    Python OpenCV: 图片的裁剪 图片裁剪使用img[y0:y1, x0:x1],其中参数分别代表y轴和x轴的起始坐标,具体使用方法如下: import cv2img = cv2.imread ...

  4. Python OpenCV 图片滑块验证码 滑块图片验证码 快速自动识别方案 代码简单 模板匹配识别 识别成功率达90%+

    前言 通过上一篇的文章大家已经对图片滑块验证码已经有了初步的了解,图片滑块验证码的核心关键在于图片识别接下来接入讲解.因为初版滑块图片识别虽然能识别验证码,通过一些策略调整也相对提高了一些图片识别率, ...

  5. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...

  6. Python + OpenCV 图片合成视频遇到的问题

    Python + OpenCV 图片合成视频遇到的问题 其中cv2.VideoWriter 中的四个参数: 文件名 视频编码格式 帧率 视频的宽度和高度 注意:需要合成的视频和对应图片的宽度和高度要相 ...

  7. 简单使用python将图片转换为字符画

    将图片转换为字符码的形式相信大家都有见过. 记得小编以前看到这些的时候是极其羡慕的,也很渴望能够实现这项功能. 然后将一副画转换为这样的字符画,发给周围的朋友炫耀. NH HN–: !;;– –;;; ...

  8. python动态图片转字符画_GIF动态图,视频?都能用Python转换成字符画图像

    字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图片 首先,我们来演示将静态图片转为字符画,功能实现主要用到 ...

  9. Python 实现 图片转 字符画,静态图、GIF 都能转

    源码在python学习交流q群:733089476 获取 字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图 ...

最新文章

  1. Three.js中使用材质覆盖属性
  2. SAP Spartacus storefront.component.html 怎么关联到其他的页面
  3. OC-成员变量的作用域
  4. Android 可开关式顶部下拉view
  5. 通信工程和计算机专业与软件工程专业,从短期和长远来看,哪个专业的前景和钱景更好?
  6. Google发布Puppeteer 1.0
  7. java udp多线程服务器_UDP服务端多线程-----
  8. poj[2230]Watchcow 深搜 欧拉回路
  9. HFSS19 官方中文教程系列 L04
  10. 全球各个国家手机号码前缀 中英文国家名称对应的手机号码的前缀
  11. python多图合并成一张图_python合并PDF文件、图片(先转化为A4纸大小PDF)
  12. C语言中取值符(*)与取地址符()
  13. 【题解】洛谷P1661扩散(同LibreOJ10015) 曼哈顿距离最小生成树
  14. 使用Blynk打造一款物联网产品
  15. Android 贝塞尔曲线实战之网易云音乐鲸云特效,2021程序员进阶宝典
  16. 用跨进程子类化技术实现对其它进程消息的拦载
  17. 二叉树 | 二叉树的镜像(翻转)
  18. 曾颖明的博客关于作者
  19. 上溯造型和下溯造性(解耦合)
  20. 漫谈程序员(五)20年资深程序员编程经验分享

热门文章

  1. 计算机软件选修课选什么好,大学选修课有哪些 选什么好
  2. log4j slf4j 使用和原理
  3. 群体遗传学--华伦德效应(Wahlund effect)
  4. 推荐一款可以把VCD光盘转换成ISO文件的工具
  5. 冲压模具设计及制造概述,值得了解学习
  6. 微信公众号开发-网页授权——配置测试账号
  7. 一种 用于GPT模型 训练的 包含加权 和 数据增强 和 损失方法 的设计
  8. 计算机应用实训室建设方案,计算机应用实训基地建设方案.doc
  9. [软件推荐]jQuery,JavaScript,HTML,CSS,PHP,MySQL,正则表达式 CHM帮助手册
  10. 浅谈系统从I386文件夹到longhorn封装