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)