python 用opencv做图片边缘识别矫正
时间: 2023-11-20 20:06:42 浏览: 161
使用 OpenCV 进行图片边缘识别矫正是一个比较常见的任务。下面是一个简单的示例代码,可以实现对图片的边缘识别和矫正。
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 边缘检测
edges = cv2.Canny(gray, 100, 200)
# 寻找边缘
contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 获取最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 获取矩形边界框
rect = cv2.minAreaRect(max_contour)
box = cv2.boxPoints(rect)
box = box.astype(int)
# 进行矫正
width = int(rect[1][0])
height = int(rect[1][1])
src_pts = box.astype("float32")
dst_pts = np.array([[0, height-1],[0, 0],[width-1, 0],[width-1, height-1]], dtype="float32")
M = cv2.getPerspectiveTransform(src_pts, dst_pts)
result = cv2.warpPerspective(img, M, (width, height))
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Edges', edges)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读取了一张图片,然后将其转换为灰度图像。接着,我们使用 Canny 算法进行边缘检测,然后使用 findContours 函数寻找边缘。然后,我们获取最大的轮廓,并使用 minAreaRect 函数获取矩形边界框。接下来,我们使用 getPerspectiveTransform 函数获取变换矩阵,将图像进行矫正,并显示结果。
阅读全文