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_ang