# 透视变换复习 import cv2 import numpy as np import matplotlib.pyplot as plt # img = cv2.imread('sudoku.jpg') # rows,cols,ch = img.shape # pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]]) # pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]]) # M = cv2.getPerspectiveTransform(pts1,pts2) # dst = cv2.warpPerspective(img,M,(300,300)) # plt.subplot(121),plt.imshow(img),plt.title('Input') # plt.subplot(122),plt.imshow(dst),plt.title('Output') # plt.show() img = cv2.imread('road.png') # cv2.circle(img, (270,160),2, (0,0,255),2) # cv2.circle(img, (330,160),2, (0,0,255),2) # cv2.circle(img, (32,260),2, (0,0,255),2) # cv2.circle(img, (555,260),2, (0,0,255),2) # cv2.imshow('draw', img) # cv2.waitKey(0) import matplotlib.pyplot as plt rows,cols,ch = img.shape pts1 = np.float32([[270,160],[328,160],[32,260],[575,260]]) pts2 = np.float32([[20,0],[510,0],[20,103],[510,103]]) M = cv2.getPerspectiveTransform(pts1,pts2) dst = cv2.warpPerspective(img,M,(523,100)) dst = cv2.resize(dst, None, fx=0.5,fy=4.0) plt.subplot(121),plt.imshow(img),plt.title('Input') plt.subplot(122),plt.imshow(dst),plt.title('Output') plt.show() 详细解释以上代码
时间: 2024-03-30 07:33:28 浏览: 14
这段代码主要是关于透视变换的应用。首先,导入需要的库cv2、numpy和matplotlib.pyplot。然后,读取一张图片(这里是road.png)。接着,我们定义了变换前后四个点的坐标(pts1和pts2),这些点用于计算透视变换矩阵M。在这个例子中,我们想要将道路的四个角变换为一个矩形,以便进行后续处理。然后,我们使用cv2.getPerspectiveTransform()函数来计算透视变换矩阵M。接着,我们使用cv2.warpPerspective()函数来将原始图像img进行透视变换,并将变换后的图像保存为dst。最后,我们使用plt.subplot()和plt.imshow()函数将原始图像和透视变换后的图像显示出来,以供观察和比较。同时,将变换后的图像进行缩放(cv2.resize()函数),以便更好地观察。