能解决大部分的图像矫正代码,能看得到矫正前后的图像
时间: 2024-04-10 21:32:09 浏览: 47
当涉及到图像矫正时,代码的实现方式因任务而异。以下是一个基本的图像矫正代码示例,用于纠正图像的旋转角度,并显示矫正前后的图像:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
def correct_image_rotation(image_path):
# 加载图像
image = cv2.imread(image_path)
# 将图像转换为灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用边缘检测算法(如Canny)检测边缘
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
# 根据边缘检测结果检测直线
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
# 计算所有直线的角度,并找到最常出现的角度
angles = []
for line in lines:
for rho, theta in line:
angle = theta * 180 / np.pi
angles.append(angle)
most_common_angle = max(set(angles), key=angles.count)
# 旋转图像以校正角度
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
rotation_matrix = cv2.getRotationMatrix2D(center, -most_common_angle, 1.0)
rotated_image = cv2.warpAffine(image, rotation_matrix, (w, h))
# 显示矫正前后的图像
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
axes[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
axes[0].set_title('Original Image')
axes[0].axis('off')
axes[1].imshow(cv2.cvtColor(rotated_image, cv2.COLOR_BGR2RGB))
axes[1].set_title('Corrected Image')
axes[1].axis('off')
plt.show()
# 返回校正后的图像
return rotated_image
# 调用函数并显示结果
image_path = 'path_to_your_image.jpg'
corrected_image = correct_image_rotation(image_path)
```
你只需要将 `path_to_your_image.jpg` 替换为你要矫正的图像的路径,代码将显示原始图像和矫正后的图像。
阅读全文