有时候文本是倾斜的,则不利于文本识别,如下图所示,那么进行文本识别之前我们需要应用文本倾斜校正算法(text skew correction,deskewing text)。
对于一幅包含旋转文本块的图像,我们需要通过以下方式纠正文本倾斜:检测图像中的文本块
确定文本块的倾斜角度和倾斜方向
旋转图像以校正倾斜的文本
那么我们开始吧。
首先读取图像并转换为灰度图:
img_path = "text.jpg"
img = cv2.imread(img_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
在进行图像处理操作时,前景通常为亮色,而背景(图像中不感兴趣的部分)通常是暗的。但是我们的输入图像是白底黑字,所以需要反转图像,让文本部分作为前景。
# flip the foreground and background to ensure text is "white"
gray = cv2.bitwise_not(gray)
先进行高斯模糊,再对图像进行阈值处理得到二值图像:
blur = cv2.GaussianBlur(gray, (7,7), 0)
# setting all foreground pixels to 255 and all background pixels to 0
ret, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)