可以缩小,不能放大:
只需要4个点坐标就可以了。
# -*- coding: utf-8 -*-
import os
import numpy as np
import cv2
list_path = r"E:\data\barcode\train\13_3_new\imgs"
# list_path=r"E:\data\barcode\train\13_3_new\blur"
g = os.walk(list_path)
img_files = ['%s/%s' % (i[0], j) for i in g for j in i[-1] if
j.endswith('jpg')]
for img_path in img_files:
img=cv2.imread(img_path)
middle_len = 268
height,width=img.shape[:2]
h_value1 = -30
w_value2 =30
pts1 = np.float32([[0, 0], [0, height], [width, height], [width, 0]])
# 变换后的四个角点
pts2 = np.float32([[0, 0], [0, height - h_value1], [width- w_value2, height - h_value1 ], [width- w_value2, 0]]) # 重要测试1
# 生成透视变换矩阵
M = cv2.getPerspectiveTransform(pts1, pts2)
# 进行透视变换
dst = cv2.warpPerspective(img, M, (width, height))
cv2.imshow("sdf",dst)
cv2.imshow("img",img)
cv2.waitKey()