双目视觉简单测试

本文介绍了使用OpenCV进行双目视觉测距的方法,并通过实验对比了不同场景下的测距效果,发现背景简单且目标较小时效果更佳。同时探讨了使用同一型号相机拍摄时颜色差异对结果的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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, 
501536815 );

    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)==27break;
    }

    
return 0;
}

    
 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值