py纸张图像边框提取裁切摆正,输入路径C:\Users\admin\AppData\Roaming\pip\123.jpg 输出路径C:\Users\admin\AppData\Roaming\pip\true.jpg
时间: 2023-09-30 22:04:41 浏览: 86
您可以使用OpenCV库来进行纸张图像边框提取、裁切和摆正操作。以下是一个示例代码,您可以将其保存为.py文件并在命令行中运行。请确保安装了OpenCV库和numpy库。
```
import cv2
import numpy as np
# 读取图像
img = cv2.imread('C:/Users/admin/AppData/Roaming/pip/123.jpg')
# 将图像转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行边缘检测
edges = cv2.Canny(gray, 100, 200)
# 寻找轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 找到最大的矩形轮廓
max_area = 0
best_cnt = None
for cnt in contours:
area = cv2.contourArea(cnt)
if area > max_area:
max_area = area
best_cnt = cnt
# 提取矩形轮廓的四个角点
peri = cv2.arcLength(best_cnt, True)
approx = cv2.approxPolyDP(best_cnt, 0.02 * peri, True)
pts = np.float32([approx[0], approx[1], approx[2], approx[3]])
# 计算目标矩形的宽度和高度
w1 = abs(pts[0][0] - pts[1][0])
w2 = abs(pts[2][0] - pts[3][0])
h1 = abs(pts[0][1] - pts[2][1])
h2 = abs(pts[1][1] - pts[3][1])
w = max(w1, w2)
h = max(h1, h2)
# 目标矩形的四个角点
dst = np.float32([[0, 0], [w - 1, 0], [w - 1, h - 1], [0, h - 1]])
# 计算变换矩阵
M = cv2.getPerspectiveTransform(pts, dst)
# 进行透视变换
result = cv2.warpPerspective(img, M, (w, h))
# 保存结果图像
cv2.imwrite('C:/Users/admin/AppData/Roaming/pip/true.jpg', result)
```
该代码将读取路径为C:\Users\admin\AppData\Roaming\pip\123.jpg的图像,提取其中的纸张边框并进行裁切和摆正操作,最后将结果保存为路径为C:\Users\admin\AppData\Roaming\pip\true.jpg的图像。您可以根据需要修改输入输出路径。
阅读全文