我无法在最新的openCV版本中使用python使用reprojectImageTo3D()。 我一直得到“TypeError:disparity不是一个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()doc: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
答案 0 :(得分:1)
仔细看看:它是cv2.reprojectImageTo3D(或者,cv.Reproject ...)
似乎,你正在尝试将旧的(已弃用的)cv api与较新的cv2混合使用。 不!
cv正在使用包装的IplImages,cv2正在使用numpy数组
所以,丢弃旧的cv api,因为在将来的版本中不支持它。 避免使用iplimages的任何代码