基于轮廓提取图像文字

输入图像:

输出图像:

Python使用opencv实现

实验环境:Window下使用Python的Opencv库

通过阈值进行前后景分割(将线条和A4纸分开)

先将输入图片转为灰度图,然后使用阈值分割函数实现二值化:img = cv2.imread('input.jpg')

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(gray,190,255,cv2.THRESH_BINARY)

cv2.imwrite("thresh.jpg", thresh)

cv2.threshold第二个参数灰度值表示小于该值就将其变为0

形态学图像处理(膨胀腐蚀)

膨胀就是求局部最大值的操作,腐蚀就是求局部最小值,所以相当于做最大值最小值滤波。我们为了让轮廓更明显,所以需要做腐蚀处理。kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))

eroded = cv2.erode(thresh, kernel)

cv2.imwrite("eroded.jpg", eroded)

用getStructuringElement函数定义一个10×10的十字结构元素,用作选取的周围点。

腐蚀后:

轮廓检测contours, hierarchy = cv2.findContours(eroded,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

findContours函数

参数第一个参数是寻找轮廓的图像;

第二个参数表示轮廓的检索模式,有四种(本文介绍的都是新的cv2接口):

cv2.RETR_EXTERNAL表示只检测外轮廓

cv2.RETR_LIST检测的轮廓不建立等级关系

cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。

cv2.RETR_TREE建立一个等级树结构的轮廓。

第三个参数method为轮廓的近似办法

cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1

cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息

返回值

cv2.findContours()函数首先返回一个list值,list中每个元素都是图像中的一个轮廓也就我们要用到的contours。

选取边界矩形:for c in contours:

x, y, w, h = cv2.boundingRect(c)

cv2.rectangle(img, (x, y), (x + w, y + h), color, 1)

通过ROI将每张图片输出

通过矩形轮廓输出提取的笔划图像,这里直接用imwrite输出。

完整代码:# -*- coding: utf-8 -*-

import cv2

img = cv2.imread('input.jpg')

result = img.copy()

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(gray,190,255,cv2.THRESH_BINARY)

cv2.imwrite("thresh.jpg", thresh)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))

eroded = cv2.erode(thresh, kernel)

cv2.imwrite("eroded.jpg", eroded)

binary, contours, hierarchy = cv2.findContours(eroded,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

color = (0, 255, 0)

for c in contours:

x, y, w, h = cv2.boundingRect(c)

cv2.rectangle(img, (x, y), (x + w, y + h), color, 1)

temp = result[y:(y + h), x:(x + w)]

cv2.imwrite("./result/" + str(x) + ".jpg", temp)

cv2.imwrite("result.jpg", img)

-----------------------------------------------------

转载请注明来源此处

原地址:#

python提取文字的轮廓_opencv 轮廓提取文字相关推荐

  1. python提取图片中的曲线_OpenCV如何提取图片中曲线

    简单介绍 在实际的应用中,我们常常需要对图像中的曲线进行描述.处理,这个曲线可以是轮廓,骨架或者其他.可以用deque 描述曲线,接下来简单介绍下如何从图片中搜索这些曲线并保存. 首先,输入的图片是一 ...

  2. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. 使用Python,OpenCV进行基本的图像处理——提取红色圆圈轮廓并绘制

    使用Python,OpenCV进行基本的图像处理--提取红色圆圈轮廓并绘制 1. 效果图 1.1 形态学图像处理效果图 1.2 转换HSV色彩空间提取 2. 源码 2.1 形态学图像处理提取源码 2. ...

  4. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  5. linux提取ttf字体轮廓,[TTF字体]提取TTF字体的轮廓(二)

    一. TTF字体轮廓解析与绘制 1.1 数据提取 void CHYTTFCharacter::InitTTPOLY() { if(0 == m_pTTPOLYData)// GetGlyphOutli ...

  6. OpenCV(25)轮廓检测(轮廓提取、属性、近似轮廓、外接矩形和外接圆)

    目录 一.轮廓检测基础理论 1.轮廓概述 2.API介绍 1.cv.findContours函数(查找轮廓) 2.cv.drawContours函数(画出轮廓) 检测轮廓并画出:(用二值图检测轮廓) ...

  7. 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形

    FindContours 在二值图像中寻找轮廓  int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_cont ...

  8. python调用qq识别图片文字_Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解...

    百度OCR体验地址: 腾讯OCR体验地址: 测试结果是:腾讯的效果要比百度的好 腾讯云目前额度是: 每个接口 1,000次/月免费,有6个文字识别的接口,一共是6,000次/月 百度接口调用之前写过文 ...

  9. python查找文字在图片中的位置_图片中的文字竟然能如此快速提取?OCR文字识别功能简直太强大了...

    想一想你之前如何将线下收集的材料信息采录到线上系统的? 比如作为财务人员,员工凭发票报销费用,但是收集到发票录入信息是需要将发票种类名称.发票代码.纳税人识别号等各种信息录入到系统.你是不是还在一个字 ...

  10. python opencv轮廓检测_OpenCV 轮廓检测的实现方法

    轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理或 ...

最新文章

  1. 银行计算机设备管理 总结,【2017年银行自助设备中心年终总结】_银行自助设备工作总结...
  2. html5 XMLHttpRequest 图片异步上传
  3. Elastic-Job中的ScriptJob
  4. AAAI2019 | 腾讯AI Lab详解自然语言处理领域三大研究方向及入选论文
  5. python 管道队列_关于python:Multiprocessing-管道与队列
  6. 解析 react、vue等路由参数的库 path-to-regexp
  7. linux自学_shell脚本for详解
  8. PHP采集程序中的常用函数
  9. 95-38-035-Buffer-AbstractByteBuf
  10. nginx 性能优化的概述及在CPU资源方面的处理
  11. 日志服务(原SLS)新功能发布(4)-- 使用OSS进行日志存储与分析
  12. hdu 4619 Warm up 2(并查集)
  13. 从jsp页面到servlet传值的不同方式
  14. 网页转PDF 在线工具 输入网址获取PDF
  15. 如何利用excel中的数据源制作数据地图
  16. 通过opencv制作人脸识别的窗口,这也太疯狂了
  17. 读书笔记--Java核心技术--高级特征
  18. python学习手册教程_python学习手册:如何学习python学习教程?
  19. Python最新操作微信解决方案(附破解文件和代码)
  20. 产品经理圈:现今Axure RP主流安装使用版本是什么?

热门文章

  1. 使用fiddler绕过“请在微信客户端打开链接”
  2. linux16.04 根目录多大,Ubuntu 18.04 根目录为啥只有 4G 大小
  3. 计算机掌握录音机的使用方法,如何使用2种方法从计算机录制音频
  4. 怎样更改计算机文件图标,文件夹图标怎么改?电脑更换文件夹图标的方法
  5. Windows 10 修改文件夹图标
  6. 各编程语言用途及分类
  7. 贵大和杭电计算机科学与技术,【20考研】计算机考研专业课变动汇总
  8. miui怎么用第三方图标包_非常棒的安卓第三方桌面lawnchair体验 “Google Pixel” 样式...
  9. 判断链表是否中心对称(21.6.8)
  10. Nik插件滤镜套装Nik Collection 3 Mac