在最新的openCV版本中,我无法使用python使用reprojectImageTo3D()。
我不断收到“TypeError:差异不是一个numpy数组”。当然,这是一个iplImage。

disparityImg = CreateImage( (320,240), IPL_DEPTH_32F, 1)
depthMapImg = CreateImage( (320,240), IPL_DEPTH_32F, 3)
depthMapImg = reprojectImageTo3D(disparityImg, Q)

但是,如果我将一个数组用于depthMapImg而不是iplImage,则会在reprojectImageTo3D中收到“OpenCV错误:断言失败(stype == CV_8UC1 || stype == CV_16SC1 || stype == CV_32SC1 || stype == CV_32FC1)。 。”

后一个错误使我认为数组和reprojectImageTo3D()之间的数据类型不匹配。

都不起作用,我该怎么办?

官方reprojectImageTo3D()文档在此处:http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void%20reprojectImageTo3D%28InputArray%20disparity,%20OutputArray%20_3dImage,%20InputArray%20Q,%20bool%20handleMissingValues,%20int%20ddepth%29

最佳答案

看一眼:cv2.reprojectImageTo3D(或者cv.Reproject ...)

似乎,您正在尝试将旧的(不推荐使用的)cv api与较新的cv2混合在一起。别 !

cv使用包装的IplImages,cv2使用numpy数组

因此,请丢弃旧的cv api,因为将来的版本将不再支持它。
避免使用iplimages的任何代码

09-17 15:57