双目视觉简单测试

 

opencv提供了双目视觉检测距离信息的函数,试着使用了两个摄像头获得两副图像测试一下,感觉背景单纯,目标较小的情况下,得到的效果较好一些。(下图分别是左图像,右图像,得到的深度图像)

用一个长的物体来测试深度,效果不好。如下:

难点问题是两个摄像机即使是同一个机型,同样的镜头,得到的图像颜色有所轻微的差别,导致效果不好。

而使用一个摄像机平移左右得到的结果会更好一些。以下图片是opencv提供的图片,效果较好。

代码:

#include  " stdafx.h "
#include 
< iostream >
#include 
< string .h >
#include 
< cxcore.h >
#include 
< cv.h >
#include 
< cvaux.h >
#include 
< highgui.h >
#include 
< fstream >


IplImage 
* image  =   0  ;  // 原始图像

using   namespace  std;


int  main( int  argc,  char *  argv[])
{

    IplImage
*  srcLeft  =  cvLoadImage( " left.jpg " , 1 );
    IplImage
*  srcRight  =  cvLoadImage( " right.jpg " , 1 );
    IplImage
*  leftImage  =  cvCreateImage(cvGetSize(srcLeft), IPL_DEPTH_8U,  1 );
    IplImage
*  rightImage  =  cvCreateImage(cvGetSize(srcRight), IPL_DEPTH_8U,  1 );
    IplImage
*  depthImage  =  cvCreateImage(cvGetSize(srcRight), IPL_DEPTH_8U,  1 );

    cvCvtColor(srcLeft, leftImage, CV_BGR2GRAY);
    cvCvtColor(srcRight, rightImage, CV_BGR2GRAY);

    cvFindStereoCorrespondence( leftImage, rightImage, CV_DISPARITY_BIRCHFIELD, depthImage, 
50 15 3 6 8 15  );

    cvNamedWindow(
" win1 " , 1 );
    cvNamedWindow(
" win2 " , 1 );
    cvNamedWindow(
" win3 " , 1 );

    cvNormalize(depthImage,depthImage,
0 , 255 ,CV_MINMAX, 0  );

    
for (;;)
    {
        cvShowImage(
" win1 " ,depthImage);
        cvShowImage(
" win2 " ,srcLeft);
        cvShowImage(
" win3 " ,srcRight);
        
if (cvWaitKey( 20 ) == 27 break ;
    }

    
return   0 ;
}

    
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值