使用python OpenCV库写一段判断图片是否倾斜,如果倾斜进行纠正的代码
时间: 2023-06-08 13:08:46 浏览: 238
图像的倾斜矫正
您好!感谢您对我的提问。
针对您的问题,下面是一份使用 Python OpenCV 库编写的判断图片是否倾斜并进行纠正的代码:
```python
import cv2
import numpy as np
def deskew(image):
# 将图片转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化处理
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 计算图片倾斜度
coords = np.column_stack(np.where(thresh > 0))
angle = cv2.minAreaRect(coords)[-1]
if angle < -45:
angle = -(90 + angle)
else:
angle = -angle
# 旋转图片
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated = cv2.warpAffine(image, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
return rotated
# 调用函数进行测试
image = cv2.imread("example.jpg")
deskewed = deskew(image)
cv2.imshow("Original", image)
cv2.imshow("Deskewed", deskewed)
cv2.waitKey(0)
```
在这段代码中,我们通过以下步骤完成了图片的倾斜检测和纠正:
1. 将图片转换为灰度图;
2. 对灰度图进行二值化处理,得到一个二值图像;
3. 利用 OpenCV 提供的 minAreaRect 函数计算图片倾斜度;
4. 利用 cv2.getRotationMatrix2D 函数计算旋转矩阵;
5. 利用 cv2.warpAffine 函数对图片进行旋转。
注意,这段代码默认输入的是一张名为 "example.jpg" 的图片。您需要将其替换为您自己的图片路径,并确保你安装了OpenCV库。
希望我能够满足您的需求,如果您有任何问题,请随时向我提问!
阅读全文