最近采用的anaconda编写python,所以以前的eclispe版的python就没有采用了,但是这个python版本是3.7.3,以前的版本是3.6.4,差别不是很大,
至于基于图像的逆透视变换完成目标的倾斜纠正的原理之类的,最近很忙,也没有心情,请自行了解。
准备工作:
pip install numpy
pip install matplotlib
pip install opencv-python
如果,已经安装了,就不用重复安装了。
这是第一个版本的代码:
import cv2
import numpy as np
#读入图片
img = cv2.imread('G:\\2018and2019two\\duomeitijishu\\juzhen.png')
H_rows, W_cols= img.shape[:2]
print(H_rows, W_cols)
# 原图的四个角点(左上、右上、左下、右下),与变换后矩阵位置
pts1 = np.float32([[140, 60], [566, 42], [10, 360], [713, 352]])
pts2 = np.float32([[0, 0],[W_cols,0],[0, H_rows],[H_rows,W_cols],])
# 生成透视变换矩阵;进行透视变换
M = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, M, (800,700))
#展示图片
cv2.imshow("original_img",img)
cv2.imshow("rdst",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行效果:
只能说,极差,然后,想办法改进,
import cv2
import numpy as np
#读入图片
img = cv2.imread('G:\\2018and2019two\\duomeitijishu\\juzhen.png')
H_rows, W_cols= img.shape[:2]
print(H_rows, W_cols)
# 原图中的四个角点(左上、右上、左下、右下),与变换后矩阵位置
pts1 = np.float32([[140, 60], [566, 42], [10, 360], [713, 352]])
pts2 = np.float32([[0, 0],[800,0],[0, 700],[800,700]])
# 生成透视变换矩阵;进行透视变换
M = cv2.getPerspectiveTransform(np.array(pts1), np.array(pts2))
dst = cv2.warpPerspective(img, M, (800,700))
#显示图片
cv2.imshow("original_img",img)
cv2.imshow("dst",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()