-
2021-03-18 10:38:04
OpenCV 文字识别(一):图像预处理
上一篇的博客中我使用了C++对印刷体汉字进行了预处理,但因为文字识别模型是基于TensorFlow的,C++调用python代码繁杂且容易出错,所以试着用Python代码写整个项目。
总体思路不变:获取直线-->间接获取角度-->旋转
测试代码:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
# 完成灰度化,二值化
def two_value(img_raw):
img_gray = cv2.cvtColor(img_raw, cv2.COLOR_BGR2GRAY) # 灰度化
ret, img_two = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 二值化
return img_two
# 旋转函数
def rotate(img_rotate_raw, angle):
(h, w) = img_rotate_raw.shape[:2]
(cx, cy) = (w//2, h//2)
m = cv2.getRotationMatrix2D((cx, cy), angle, 1.0) # 计算二维旋转的仿射变换矩阵
return cv2.warpAffine(img_rotate_raw, m, (w, h), borderValue=(0, 0, 0))
# 霍夫直线检测
def get_angle(img_hou_raw):
sum_theta = 0
img_canny = cv2.Canny(img_hou_raw, 50, 200, 3)
lines = cv2.HoughLines(img_canny, 1, np.pi/180, 300, 0, 0)
# lines 是三维的
for i in range(lines.shape[0]):
theta = lines[i][0][1]
sum_theta += theta
average = sum_theta / lines.shape[0]
angle = average/np.pi*180 - 90
return angle
def correct(img_cor_raw):
img_two = two_value(img_cor_raw)
angle = get_angle(img_two)
if angle == -1:
print("No lines!!!")
return 0
return rotate(img_two, angle)
if __name__ == "__main__":
img = cv2.imread("D:/pycharm/Word_Lib/xie.jpg")
cv2.imshow("raw", img)
img_rot2 = correct(img)
cv2.imshow("last", img_rot2)
cv2.waitKey()
测试效果(✔)
唯一的问题在于改写原先 lines = cv2.HoughLines(img_canny, 1, np.pi/180, 300, 0, 0)这段代码时,无法使用依次判断,因为最初的默认值得类型是NoneType,而之后则是一个三维数组,会产生矛盾。但因为汉字文本直线清晰,故我选择了较小的阈值:100。
总结:
1.python和C++很大一点不同便是python没有指针,所以一些函数调用的时候要注意返回值,而C++中返回(输出)值写于函数中。
2.python矩阵在概念上要着重理解。写代码时踩了很多坑。
3.pycharm这个IDE很强大,一些语法上的不规范便有各色波浪线,强迫症福利。
更多相关内容 -
CSS控制文字在一条线中间的方法
2020-09-25 01:01:52主要为大家介绍了CSS控制文字在一条线中间的方法,这里实现将“网页特效”四个字显示在虚线框的上下居中位置,非常美观,需要的朋友可以参考下 -
Python3 tkinter基础 Canvas create_text 在画布上添加文字
2020-11-29 08:54:21Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的颜色 Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ... 随机推荐 css代码优化 一....Python : 3.7.0
OS : Ubuntu 18.04.1 LTS
IDE : PyCharm 2018.2.4
Conda : 4.5.11
typesetting : Markdown
code
"""
@Author : 行初心
@Date : 18-9-30
@Blog : www.cnblogs.com/xingchuxin
@Gitee : gitee.com/zhichengjiu
"""
from tkinter import *
def main():
root = Tk()
w = Canvas(
root,
width=200,
height=200,
background="white"
)
w.pack()
w.create_text(100, 50, text='神农本草经')
mainloop()
if __name__ == '__main__':
main()
result
reference
[文档] docs.python.org/3/library/tkinter.html
resource
[文档] docs.python.org/3
[规范] www.python.org/dev/peps/pep-0008
[规范] zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
[源码] www.python.org/downloads/source
[ PEP ] www.python.org/dev/peps
[平台] www.cnblogs.com
[平台] gitee.com
Python具有开源、跨平台、解释型和交互式等特性,值得学习。
Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
GUI可以选择PyQt5、PySide2、wxPython、PyGObject、wxWidgets等进行创作。
代码的书写要遵守规范,这样有助于沟通和理解。
每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。
Python3 tkinter基础 Canvas delete 删除画布中的所有图形
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas background 创建白色的画布 create_line width 画宽的线
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas coords 移动直线,itemconfig 设置矩形的颜色, delete 删除一条直线
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas bind 鼠标左键点击时,在当前位置画椭圆形
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas create_rectangle 画虚边的矩形 create_oval 画椭圆形 圆形
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas create_rectangle 画矩形
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas create_line 画实线与虚线
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Canvas create_polygon 画三角形
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的颜色
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
随机推荐
css代码优化
一.CSS代码优化作用与意义 1.减少占用网页字节.在同等条件下缩短浏览器下载css代码时间,相当于加快网页打开速度2.便于维护.简化和标准化css代码让css代码减少,便于日后维护3.让自己写的cs ...
.NET简谈反射(动态调用)
我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步. 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象 ...
inno setup判断是Windows系统版本(其实还是Delphi代码,还能检查域控制器和家庭版)
1.设置Windows最低版本要求 [Setup]: MinVersion 格式: a.bb,c.dd,这里 a.bb 是 Windows 版本,c.dd 是 Windows NT 版本. 默认值: ...
【HDU 5184】 Brackets (卡特兰数)
Brackets Problem Description We give the following inductive definition of a “regular brackets” sequ ...
Python自动化运维之21、CSS
一.css简介 CSS 是 Cascading Style Sheets的缩写,称为层叠样式表,用来设计网页的样式布局,以及大小来适应不同的屏幕等,使网页的样式和网页数据分离, 二.导入css 导入c ...
解决Android5.0以下Dialog引起的内存泄漏
最近项目开发中,开发人员和测试人员均反应在android5.0以下手机上LeakCanary频繁监控到内存泄漏,如下图所示,但凡用到Dialog或DialogFragment地方均出现了内存泄漏. 如 ...
在vue 里使用腾讯ditu
https://www.cnblogs.com/mrer/p/7144705.html
Chrome 使用绿色版实现同一个机器 打开多个不同的chrome版本
1. 之前找了一个方案能够实现 多个chrome版本的 同时安装 但是发现不是很好. 2. 最近的一个办法 就是使用chrome的绿色版来实现 3. 下载地址: https://www.chrome6 ...
svnrdump:E175000:SSL is not supported错误的解决
参考博客:https://www.cnblogs.com/jkko123/p/6358461.html 参考博客:https://blog.csdn.net/w171066/article/detai ...
ant 标签详解
Ant 开发 Ant的构建文件当开始一个新的项目时,首先应该编写Ant构建文件.构建文件定义了构建过程,并被团队开发中每个人使用.Ant构建文件默认命名为build.xml,也可以取其他的名字.只不过 ...
-
OpenCV在图像中添加文字,画点,画直线
2017-09-06 20:27:54OpenCV在图像中添加文字,画点,画直线 ,OpenCV在图像中添加文字,绘制点,绘制直线 ,OpenCV在图像中添加文字,画点,画直线
【尊重原创,转载请注明出处】 http://blog.csdn.net/guyuealian/article/details/77870983
#include "stdafx.h" #include <iostream> #include <string.h> #include<opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { Mat src = imread("images/2.jpg");//图片必须添加到工程目录下 // 将原图像转换为灰度图像 //cvtColor(src, src, CV_BGR2GRAY) //在原图画一个圆圈点 cv::Point point;//特征点,用以画在图像中 point.x = 20;//特征点在图像中横坐标 point.y = 50;//特征点在图像中纵坐标 cv::circle(src, point, 4, cv::Scalar(0, 0, 255));//在图像中画出特征点,2是圆的半径 //在原图画一条直线 cv::Point start = cv::Point(10, 100); //直线起点 cv::Point end = cv::Point(50, 200); //直线终点 cv::line(src, start, end, cv::Scalar(0, 0, 255)); //在原图某个位置添加文字标记 //char str[4]; //int num = 100; //_itoa_s(num, str, 10);//数字需要转为字符串来显示 string str = "Love100"; putText(src, str, end, cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar(0, 255,0 ), 2); imshow("src", src); waitKey(0); }
运行结果:
-
直接在RGB图片上画直线矩形多边形写字-bitmap_plot_v1_2.zip
2019-08-13 10:12:59直接在RGB图片上画直线矩形多边形写字-bitmap_plot_v1_2.zip 使用方法: 首先使用正常的imread函数,把你的图片读到工作空间里: I=imread; % 画一条直线 x=rand*50 50; y=linspace; I=... -
【Python+OpenCV 给图像添加直线/矩形/圆/文字】
2021-12-14 14:46:24Python+OpenCV 给图像添加直线/矩形/圆/文字1、代码部分2、实现效果 1、代码部分 import cv2 import numpy as np img = np.zeros((640, 640, 3), np.uint8) #创建640*640的零矩阵,3通道 img_green = np.zeros((512...1、代码部分
import cv2 import numpy as np img = np.zeros((640, 640, 3), np.uint8) #创建640*640的零矩阵,3通道 img_green = np.zeros((512, 512, 3), np.uint8) #创建640*640的零矩阵,3通道 img_green[:] = 78,238,148 #填充绿色 cv2.line(img, (350, 350), (img.shape[1], img.shape[0]), (153, 50, 204), 10) #画直线 line(目标图像,直线起点,直线终点,颜色阈值,直线厚度) cv2.rectangle(img, (0, 0), (350, 350), (255, 187, 197), cv2.FILLED) #画矩形 rectangle(目标图像,起点,终点,颜色阈值,厚度) cv2.circle(img, (100, 450), 90, (255, 255, 0), 5) #画圆 circle(目标图像,圆心坐标,半径,颜色阈值,厚度) cv2.putText(img, "DON'T STOP! ", (360, 150), cv2.FONT_HERSHEY_COMPLEX, 1, (245, 255, 220), 3) cv2.putText(img, "KEEP GOING! ", (360, 200), cv2.FONT_HERSHEY_COMPLEX, 1, (245, 245, 220), 3) #文字 puText(目标图像,文字内容,坐标,文本字体,文字大小,颜色阈值,厚度) cv2.imshow("Green Image", img_green) cv2.imshow("Image", img) cv2.waitKey(0)
2、实现效果
-
label 与input 文字不在一条直线上解决方案
2016-12-08 13:53:05给label添加浮动。 全选 </div>css#all{ float:left; }运行结果 -
CSS文字两边添加横线的几种方法
2021-06-10 00:59:34详细说明在现代浏览器中浏览,全部可以正常显示.*第一种情况:是用的标签类名最为多的一个,而实际上会用到这样去写的很少,而且随着伪类的出现,实现起来更加方便,但这个的兼容性好啊...优: 兼容性强... -
文字在线中间,CSS巧妙实现分隔线的几种方法
2021-06-09 05:56:52} 优点:文字可多行 浮动实现分隔线: .demo_line_04{ width:600px; } .demo_line_04{ overflow: hidden; _zoom: 1; } .demo_line_04 b{ background: #ddd; margin-top: 8px; float: left; width: 26%; height: 1px... -
opencv 基本绘图功能 画直线 画圆 给图像添加文字等
2020-03-29 15:14:47图像上写文字 实验 import cv2 as cv import numpy as np # 创建一副黑色的图片 img = np.zeros((512, 512, 3), np.uint8) # 画一条线宽为5的蓝色直线 # 参数1:源图像,参数2:起点,参数3:终点,参数4:颜色... -
在QGraphicsView窗口中显示矩形、三角形、直线、文字、椭圆,由QGraphicsItem中各类型创建在QGraphicsScene...
2022-01-17 21:17:23} void MainWindow::on_actStraight_Line_triggered() { /*直线的左上角起始坐标点-100, 0 */ auto *item = new QGraphicsLineItem(-100, 0, 100, 0); item->setFlags(QGraphicsItem::ItemIsFocusable | QGraphics... -
python Matplotlib基础--如何添加文本和标注
2021-02-09 05:22:55在一些情况下,这个故事可以通过纯图像的方式表达,不需要额外添加文字,但是在另外一些情况中,图表需要文字的提示和标签才能将故事讲好。也许标注最基本的类型就是图表的标签和标题,但是其中的选项参数却有很多。... -
Echarts 树图的连接线上加箭头与文字方案记录
2021-11-24 21:05:03echarts 树图的连接线上加箭头与文字 方案1:箭头作为一个节点 方案2:富文本rich配置 -
VB.NET Draw绘图实例并添加文字标注.rar
2019-07-10 09:34:21又一个VB.NET Draw绘图实例,可以画圆、直线、椭圆等图形,也可以直接在文字标签输出到图像上,演示了DrawLine、DrawEllipse、DrawRectangle、DrawCurve、DrawLines、DrawString、DrawsForm等。以下是简单的画圆、画... -
流程图走起!使用WPS文字快速制作美观的流程图
2021-03-07 08:57:13您可能感兴趣的话题:WPS核心提示:流程图简明易懂,在工作中应用很广,经常出现在文档中,下面我们就来探讨一下怎么样用WPS快速高效和画出漂亮的流程图。流程图简明易懂,在工作中应用很广,经常出现在文档中,下面... -
CSS 文字两边加直线
2015-12-23 16:41:34Examples --> Float span { display: block; position: relative; border:1px solid green; width: 1000px; margin: -
关于input标签前后有汉字并要求汉字与输入框在一条直线上
2019-04-11 15:14:20具体做法是:首先将input标签用一个div标签包裹,并设置div的属性为:style='display:inline',同时也设置input的属性为:style='display:inline',input前后都可加汉字,实例如下: <div style="display:inline... -
python ImageDraw 添加文字
2020-11-29 08:53:48# # # 绘制直线 # draw.line((20, 20, 150, 150), 'cyan') # # # 绘制矩形 # draw.rectangle((100, 200, 300, 400), 'black', 'red') # # # 绘制弧 # draw.arc((100, 200, 300, 400), 0, 180, 'yellow') # draw.arc... -
PPT如何给文字添加双删除线
2022-01-07 14:29:26为了突出文字的重点,可以添加双删除线,怎么给PPT里面的文字添加删除线?一起看看吧。 1,新建一份PPT文档,输入示例文字用于演示,如图。 2,选中文字右键,点击“文本高级设置”,在字体设置里面勾选双删除线... -
canvas绘制的直线动画
2020-08-31 13:48:00本文主要分享了canvas绘制的直线动画的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧 -
使用dc画笔画矩形、直线与椭圆示例
2020-09-04 11:30:48主要介绍了使用dc画笔画矩形、直线与椭圆示例,需要的朋友可以参考下 -
OPENCV : 在图片上添加文字、画线
2021-04-21 09:08:44//在原图某个位置添加文字标记 //char str[4]; //int num = 100; //_itoa_s(num, str, 10);//数字需要转为字符串来显示 string str = "Love100"; putText(src, str, end, cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar... -
html 水平线中间添加文字
2021-06-09 01:30:19.personal-mybuluo-head {height: 14px;position: relative;}.personal-mybuluo-wording {position: absolute;top: 0;z-index: 2;left: 50%;background-color: #fff;color: #777;text-align: center;... -
html怎么在横线中间加文字
2015-12-14 09:58:22想问下,html怎么能实现下图的效果呢?谢谢  -
微信小程序文字两边添加横线
2019-06-04 17:22:44效果图 实现代码 方法1 简单点的 wxml <view > <text class='reason_txt'>入网的理由</text> </view> wxss .reason_txt{ font-size: 32rpx;... display: table... -
css怎么在文字两边加上横线
2021-06-10 00:59:32css中可利用:before、:after和content属性来在文字两边加上横线;语法“E:before,E:after{content:"";flex:1 1;border-bottom:2px solid;}”,E为包含文字的元素。本教程操作环境:Windows7系统、css3版本、Dell G3... -
html添加一条直线 用html代码怎样画一条竖直线?
2021-06-08 18:05:51其次,在index.html的标签中,添加代码:。浏览器运行index.html页面,此时成功在html中画了一条线。在html静态页面中,用哪个标签插入一条直线?html代码中:如何输入一条长长的横线呀?用input页面标签 并将下Border... -
简单三步,用WPS轻松完成一个又大气又好看的流程图!
2021-01-12 12:10:00新建流程图文件流程图可以从 WPS 的其他组件中创建,如 WPS 文字、WPS 表格等,也可以单独创建。流程图自动保存在云文档,而非本地硬盘中,可以保证用户在创建流程图之后随时调用流程图。1.新建空白流程图如果要从... -
OpenCV学习笔记(五)——图像上添加几何图形和文字(绘制圆、线段、椭圆、矩形、多边形及生成文字)
2022-03-22 21:13:44目录1 绘制圆2 绘制线段3 绘制椭圆4 绘制矩形5 绘制多边形6 生成文字示例代码 1 绘制圆 OpenCV4中分别提供了绘制圆的函数cv.circle(). #cv.circle()函数原型 img = cv.circle(img, center, radius, ...