OpenCV Python中的phaseCorrelate函数

b_m*_*b_m 5 python opencv computer-vision

phaseCorrelate似乎是OpenCV Python包装器的一个未记录的函数.C++函数的doc就在这里.

当我从Python调用该函数时,我收到以下错误:

cv2.error: ..\..\..\src\opencv\modules\imgproc\src\phasecorr.cpp:495: error: (-215)    src1.type() == CV_32FC1 || src1.type() == CV_64FC1
Run Code Online (Sandbox Code Playgroud)

每个OpenCV 2函数都使用numpy数组,我怀疑这个函数是从旧的包装器中保留的.也许我需要在调用函数之前将numpy数组转换为CvMats?我怎么做?

Abi*_*n K 7

您无需将其转换为cvMat.

错误表示您的输入应该是单通道float32float64单通道.

因此,相应地转换图像.

两个图像应该是相同的大小.然后应用phaseCorrelate函数,如下:

>>> src1 = cv2.imread('sudoku.jpg',0)   # load first image in grayscale
>>> src2 = cv2.imread('su1.png',0)      # load second image in grayscale
>>> src1 = np.float32(src1)             # convert first into float32
>>> src2 = np.float32(src2)             # convert second into float32  
>>> ret = cv2.phaseCorrelate(src1,src2) # now calculate the phase correlation
>>> ret
(-0.024777238426224812, 0.0011736626157130559)
Run Code Online (Sandbox Code Playgroud)

(除了亮度变化外,我的两张图像都是一样的.)

关于文档,您可以发布错误报告code.opencv.org.

  • 我可以使用phasecorrelate()结果计算两张图片的差异角度吗? (2认同)