1
我使用Python 2.7.13 | Anaconda 4.3.1(64位)和OpenCv'2.4.13.2'。 我試圖幾何變換應用到圖片,我需要使用爲什麼我無法在opencv中找到cvPoint2D32f函數?
CvPoint2D32f center = cvPoint2D32f(x, y)
,但我沒能找到這個功能,這是在python不存在或已被棄用。
我使用Python 2.7.13 | Anaconda 4.3.1(64位)和OpenCv'2.4.13.2'。 我試圖幾何變換應用到圖片,我需要使用爲什麼我無法在opencv中找到cvPoint2D32f函數?
CvPoint2D32f center = cvPoint2D32f(x, y)
,但我沒能找到這個功能,這是在python不存在或已被棄用。
CvPoint2D32f
類型是舊的/不贊成使用的類型。 OpenCV 2引入了類型Point2f
來取代它。無論如何,你不需要Python中的那種類型。你可能需要的是一個dtype = np.float32
的numpy數組。對於分,該陣列應當建立這樣的:
points = np.array([ [[x1, y1]], ..., [[xn, yn]] ], dtype=np.float32)
你不會總是需要設置dtype
,一些功能(如cv2.findHomography()
爲例)將採取整數。
這些點的例子被使用,用圖片來自this tutorial,我們可以做到以下幾點,以找到並應用單應到圖像:
import cv2
import numpy as np
src = cv2.imread('book2.jpg')
pts_src = np.array([[141, 131], [480, 159], [493, 630],[64, 601]], dtype=np.float32)
dst = cv2.imread('book1.jpg')
pts_dst = np.array([[318, 256],[534, 372],[316, 670],[73, 473]], dtype=np.float32)
transf = cv2.getPerspectiveTransform(pts_src, pts_dst)
warped = cv2.warpPerspective(src, transf, (dst.shape[1],dst.shape[0]))
alpha = 0.5
beta = 1 - alpha
blended = cv2.addWeighted(warped, alpha, dst, beta, 1.0)
cv2.imshow("Blended Warped Image", blended)
cv2.waitKey(0)