OpenCV文本图像的旋转矫正
时间: 2024-06-08 12:09:13 浏览: 10
在 OpenCV 中,可以使用以下步骤对文本图像进行旋转矫正:
1. 将图像转为灰度图像。
2. 使用 Canny 边缘检测算法检测图像的边缘。
3. 使用霍夫变换检测图像中的直线。
4. 找到与水平方向最接近的直线,并计算出旋转角度。
5. 使用旋转矩阵对图像进行旋转矫正。
下面是 Python 代码实现这个过程:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('text.jpg')
# 将图像转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用 Canny 边缘检测算法检测图像的边缘
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
# 使用霍夫变换检测图像中的直线
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
# 找到与水平方向最接近的直线,并计算出旋转角度
min_angle_diff = 1000
for line in lines:
rho, theta = line[0]
angle = theta * 180 / np.pi
angle_diff = abs(angle - 90)
if angle_diff < min_angle_diff:
min_angle_diff = angle_diff
best_line = line
rho, theta = best_line[0]
angle = theta * 180 / np.pi - 90
# 使用旋转矩阵对图像进行旋转矫正
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w/2, h/2), angle, 1)
rotated = cv2.warpAffine(img, M, (w, h))
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,text.jpg 是待旋转矫正的文本图像。