当前位置: 首页 > article >正文

Python Opencv实践 - 入门使用Tesseract识别图片中的文字

        做车牌识别项目前试一试tesseract识别中文。tesseract的安装使用请参考:

Python OCR工具pytesseract详解 - 知乎pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式。本文介绍如何使用pytesseract 实现图片文字识别。 引言OCR(Opti…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/448253254        

import pytesseract as tst
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

#参考资料
#https://zhuanlan.zhihu.com/p/448253254

original_img = cv.imread("../../SampleImages/chineseCharacters.jpg", cv.IMREAD_COLOR)
#图片转换为灰度图
img = cv.cvtColor(original_img, cv.COLOR_BGR2GRAY)
#二值化
ret,img = cv.threshold(img, 160, 255, cv.THRESH_BINARY)
plt.imshow(img, cmap='gray')
imgH,imgW = img.shape
print(imgH)
print(imgW)

#显示支持的语言列表
print(tst.get_languages(config=''))
#使用image_to_string将图片中的文字转换出来
print(tst.image_to_string(img, lang='chi_sim'))

#使用image_to_boxes返回识别的字符及边框
boxes = tst.image_to_boxes(img, lang='chi_sim')
print(boxes)
#返回值:
# 字符 左下角X 左下角Y 右上角X 右上角Y 
# 例子: 稳 116 616 268 690 0
#绘制边框
#注意,opencv的坐标系以左上角为原点,boxes中的参数是以左下角为原点
for box in boxes.splitlines():
    elements = box.split()
    print(elements)
    x1,y1,x2,y2 = int(elements[1]), int(elements[2]), int(elements[3]), int(elements[4])
    #转换到opencv坐标系
    charHeight = y2 - y1
    y1 = imgH - y1 - charHeight
    y2 = imgH - y2 + charHeight
    print("Opencv character position:" + str(x1) + ' ' + str(y1)  + ' '  + str(x2)  + ' '  + str(y2))
    cv.rectangle(original_img, (x1, y1), (x2, y2), (0,255,0), 2)
plt.imshow(original_img[:,:,::-1])

        image_to_boxes方法返回的坐标是以左下角为原点的,可以从打印中印证这一点。


http://www.kler.cn/a/103681.html

相关文章:

  • 基于Java的学生学籍管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 计算机视觉与深度学习 | 基于点线融合的视觉惯性SLAM前端
  • AOP和OOP有什么异同点
  • framework Android
  • rust - 理解borrow trait
  • 用libuv实现遍历文件系统
  • 【python入门】异常、文件操作
  • 【Airflow】构建爬虫任务系统
  • django报错--Not Found The requested URL was not found on the server.
  • 【【萌新的SOC学习之SD卡DMA回路读写大数据的实验】】
  • 多级缓存入门
  • 安卓主板_MTK联发科4G低功耗安卓主板开发板方案
  • Git - 导出(archive)、忽略(gitignore)、隐藏(Stash)、合并冲突(merge)的解决方法
  • 【机器学习合集】标准化与池化合集 ->(个人学习记录笔记)
  • 订水商城H5实战教程-04用户注册
  • VMwarePlayer安装Ubuntu,切换中文并安装中文输入法
  • Python基础教程:列表推导式详解
  • 【Java网络初识】 一
  • K8s 概念及组件
  • gRPC之gRPC转换HTTP