opencv - cvConvertScale错误

标签 opencv python-2.7

我是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/

相关文章:

python - 运行后如何获得对Docker容器的bash访问

java - OpenCV 选择灰色颜色范围

python - 如何对分支 python 版本实现 100% 覆盖?

python-3.x - 多个版本的 Anaconda & Python 安装

python - 使用 python Fabric 的 Linux 机器的目录大小

python - 在 Python 中用交替颜色填充轮廓

c++ - QObject::connect:没有此类信号-QT和OpenCV SIGNAL以及connect()错误

java - 计算机视觉应用程序的 GUI

python-2.7 - python从url上传图片到google drive api

python - 从 C++ 调用 Python 脚本并使用其输出