我是Python和openCV的新手,所以如果这很简单,我会提前道歉。
我正在尝试遵循http://altruisticrobot.tistory.com/219的深度图代码。
在下面的代码中ConvertScale
引发以下错误:
src.size == dst.size && src.channels() == dst.channels()
我花了几天时间,不知道为什么。
任何指针将不胜感激。
提前致谢。
im_l = cv.LoadImage('C:\Python27\project\captureL6324.png',cv.CV_LOAD_IMAGE_GRAYSCALE)
im_r = cv.LoadImage('C:\Python27\project\captureR6324.png',cv.CV_LOAD_IMAGE_GRAYSCALE)
imsize = cv.GetSize(im_l)
disp = cv.CreateImage(imsize,cv.IPL_DEPTH_16S,1)# to receive Disparity
#run stereo Correspondence-- returns a single channel 16 bit signed disparity
disparity = cv.FindStereoCorrespondenceBM(im_r,im_l,disp,cv.CreateStereoBMState())
#convert to a real disparity by dividing it by 16-- first create variable to hold the converted scale
real_disparity = cv.CreateImage(imsize,cv.IPL_DEPTH_16S,1)
cv.ConvertScale(disparity, real_disparity, -16,0)
#get the point cloud
depth = cv.CreateImage(cv.GetSize(im_l),cv.IPL_DEPTH_32F,3)
cv.ReprojectIMageTo3D(real_disparity,depth, ReprojectMatrix)
最佳答案
您的问题是,FindStereoCorrespondenceBM
将结果保存在第三个参数中,但是您正在使用返回值None
进行进一步的计算。由于期望某种大小和类型的矩阵,因此会导致错误。
所以改变一下
cv.ConvertScale(disparity, real_disparity, -16,0)
至
cv.ConvertScale(disp, real_disparity, -16,0)
为了运行整个脚本,我还将最后一行更改为
ReprojectMatrix = cv.CreateMat(4,4,cv.CV_32FC1);
cv.ReprojectImageTo3D(real_disparity,depth, ReprojectMatrix)
这个脚本对我来说运行没有错误。但是我没有检查它是否给出正确的结果。
关于opencv - cvConvertScale错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800261/