我正在使用Python 2.7.13 | Anaconda 4.3.1(64位)和OpenCv'2.4.13.2'。 我正在尝试将几何变换应用于我需要使用的图像
CvPoint2D32f center = cvPoint2D32f(x, y)
但是我无法找到这个函数,这在python中是不可用的或者已被弃用。
答案 0 :(得分:2)
类型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)