Ask Your Question

Revision history [back]

unwrapPhaseMap() does not take ndarray in Python

Hi there,

I'm doing some structured light and fringe analysis work and am trying to use the phase unwrapping function cv.phase_unwrapping_PhaseUnwrapping.unwrapPhaseMap in OpenCV (4.4.0) with Python (doc here)

unwrapPhaseMap() virtual void cv::phase_unwrapping::PhaseUnwrapping::unwrapPhaseMap ( InputArray wrappedPhaseMap, OutputArray unwrappedPhaseMap, InputArray shadowMask = noArray() ) pure virtual Python: unwrappedPhaseMap = cv.phase_unwrapping_PhaseUnwrapping.unwrapPhaseMap( wrappedPhaseMap[, unwrappedPhaseMap[, shadowMask]] )

However, when I tried to call the function in Python, the TypeError occured:

Exception has occurred: TypeError descriptor 'unwrapPhaseMap' for 'cv2.phase_unwrapping_PhaseUnwrapping' objects doesn't apply to a 'numpy.ndarray' object

Looks like the function doesn't take ndarray as an input. I'm assuming it takes cv::Mat. But after some version (3.0?), OpenCV removed the cv2.cv and the related fromarray() function that converts the ndarray to cv::Mat. It seems there is no way to use cv::Mat in the current version of OpenCV in Python. Anyone knows how to use the unwrapPhaseMap() function with Python and is this possibly a legacy issue?

Many thanks!