使用python-opencv写一段图像倾斜校正的代码
时间: 2023-06-13 20:05:00 浏览: 174
opencv vc++ c+ 图像倾斜校正
4星 · 用户满意度95%
以下是使用Python和OpenCV库进行图像倾斜校正的代码:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('input.jpg')
# 将彩色图片转换为灰度图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对图像进行二值化处理
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
# 找到图像中的所有轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 找到最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 找到最小外接矩形
rect = cv2.minAreaRect(max_contour)
box = cv2.boxPoints(rect)
box = np.int0(box)
# 计算旋转角度
angle = rect[2]
# 旋转图像
rows, cols = img.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
rotated = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_CUBIC)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在此代码中,我们首先读取一张图像并将其转换为灰度图像。然后,我们对图像进行二值化处理,并找到图像中的所有轮廓。接下来,我们找到最大轮廓并计算最小外接矩形。然后,我们计算旋转角度并使用OpenCV的`getRotationMatrix2D`函数旋转图像。最后,我们显示原始图像和旋转后的图像。
阅读全文