python 图片 文本 矫正
代码
# -*- coding: UTF-8 -*-
import numpy as np
import cv2
import os
## 图片旋转
def rotate_bound(image, angle):
#获取宽高
(h, w) = image.shape[:2]
(cX, cY) = (w // 2, h // 2)
# 提取旋转矩阵 sin cos
M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)
cos = np.abs(M[0, 0])
sin = np.abs(M[0, 1])
# 计算图像的新边界尺寸
nW = int((h * sin) + (w * cos))
# nH = int((h * cos) + (w * sin))
nH = h
# 调整旋转矩阵
M[0, 2] += (nW / 2) - cX
M[1, 2] += (nH / 2) - cY
return cv2.warpAffine(image, M, (nW, nH),flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
def cv2_imread(path):
img=cv2.imdecode(np.fromfile(path,dtype=np.uint8),0)
return img
## 获取图片旋转角度
def get_minAreaRect(image):
gray = image
thresh = cv2.threshold(gray, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
coords = np.column_stack(np.where(thresh > 0))
return cv2.minAreaRect(coords)
def cv2_imwrite(path,img):
cv2.imencode(".png", img)[1].tofile(path)
def text_correcting(image_path):
image = cv2_imread(image_path)
print("image:",image)
angle = get_minAreaRect(image)[-1]
rotated = rotate_bound(image, angle)
print("rotated:",rotated)
cv2_imwrite("image_path",rotated)
if __name__ == "__mian__":
text_correcting(r"C:\Users\xiahuadong\Desktop\PDF文字矫正代码\20200310c国发\20200310c国发0007.png")