Graphics 从视差获取三维点时出错

Graphics 从视差获取三维点时出错,graphics,opencv,computer-vision,stereo-3d,Graphics,Opencv,Computer Vision,Stereo 3d,所以我计算了两个立体图像(左和右)之间的视差,看起来是正确的 (因为它在形状上与原始图像有些相似)。在此之后,我使用以下线条:- cvReprojectImageTo3D(&disparity, threeDimage, &Q); 然后在三维图像中得到答案。这是一个矩阵,我通过以下方式访问它:- for(int ii=0;ii<threeDimage->rows;ii++) { float *data = (float *)(three

所以我计算了两个立体图像(左和右)之间的视差,看起来是正确的 (因为它在形状上与原始图像有些相似)。在此之后,我使用以下线条:-

cvReprojectImageTo3D(&disparity, threeDimage, &Q);
然后在三维图像中得到答案。这是一个矩阵,我通过以下方式访问它:-

for(int ii=0;ii<threeDimage->rows;ii++)
    {       
    float *data = (float *)(threeDimage->data.ptr + ii * threeDimage->step);

    for(int jj=0;jj<threeDimage->cols*3;jj=jj+3) 
   {


      float a=data[jj];
      float b=data[jj+1];
      float c=data[jj+2];
      fprintf(fpp,"%f %f %f \n", a,b,c);

       }

}
for(int-ii=0;iirows;ii++)
{       
浮点*数据=(浮点*)(三维图像->数据.ptr+ii*三维图像->步长);
对于(int jj=0;jjcols*3;jj=jj+3)
{
浮点a=数据[jj];
浮动b=数据[jj+1];
浮点数c=数据[jj+2];
fprintf(fpp,“%f%f%f\n”,a、b、c);
}
}

但问题是它似乎没有给我一个正确的答案。我的文件中有很多重复的值。有没有关于可能出错的提示?矩阵的遍历是否正确?

你只能从视差图中有边的点获得不同的3D距离。如果你有相同视差的大区域(在输入图像中为平灰色),那么它们将具有相同的Z。

我正在尝试重建一张脸,是的,图像的大部分中心部分看起来都是相同的灰度。但是我想视差图是对的(我可以看到脸的轮廓)?我怎样才能改进它以获得更合理的3d云呢?我使用了一些最新的算法来生成视差图。因此,图像中有不同的色块,但就像所有东西都显示在一条线上一样!这真是太奇怪了,让我觉得重投影部分可能有问题。