【问题标题】:Disparity map's color is reversed视差图的颜色反转
【发布时间】:2015-07-30 15:01:20
【问题描述】:

我的视差图的结果很好。据我所知,近处的物品应该是浅色的,远处的物品应该是深色的。相反的情况发生在我身上。

这是我的代码:

CvStereoBMState *BMState = cvCreateStereoBMState();
    assert(BMState != 0);
    BMState->preFilterSize=31/*41*/;
    BMState->preFilterCap=41/*31*/;
    BMState->SADWindowSize=31/*41*/;
    BMState->minDisparity=-0/*-64*/;
    BMState->numberOfDisparities=112/*128*/;

    try
    {
    while(true)
    {
        if(true)
        {

        if( frameL && frameR )
        {
            CvMat part;
            cvRemap( gFrameL, img1r, mx1, my1 );
            cvRemap( gFrameR, img2r, mx2, my2 );
            if( true/*!isVerticalStereo || useUncalibrated != 0 */)
            {

                cvFindStereoCorrespondenceBM( img1r, img2r, disp,BMState);

                cvNormalize( disp, vdisp, 0, 256, CV_MINMAX );
                cvNamedWindow( "disparity" );
                cvShowImage( "disparity", vdisp );
            }
        }
      }
frameL = cvQueryFrame(capLeft);
frameR= cvQueryFrame(capRight);
cvCvtColor(frameL,gFrameL,CV_BGR2GRAY);
cvCvtColor(frameR,gFrameR,CV_BGR2GRAY);
    } 

我该如何解决这个问题?

【问题讨论】:

    标签: c++ opencv camera-calibration disparity-mapping


    【解决方案1】:

    Disparity 是一个立体图像中的一个点与另一个点之间的(水平)像素单位的偏移量,其中两个点都是同一个 3D 世界点的图像。如果您的图像被切换,则视差的方向也会被翻转。尝试切换输入图像。

    如果您的左右图像互换,则差异可能为负。
    cvNormalize() 之后,您将获得适当的正值,较小的值表示接近的对象。

    【讨论】:

    • 在这种情况下如何使用cvNormalize() 的示例会很好。
    猜你喜欢
    • 2015-06-09
    • 2021-09-23
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2018-05-07
    • 2019-07-13
    相关资源
    最近更新 更多