基于matlab标定数据,使用opencv实现双目立体摄像头的标定(源代码)

本文介绍了如何基于matlab标定数据,利用opencv进行双目立体摄像头的标定。作者分享了从matlab计算双目参数到opencv的xml文件转换,以及立体图像矫正的代码,强调了双目标定中同时拍摄的重要性,并提供了相关博客资源链接。
摘要由CSDN通过智能技术生成

我参考了这几位大牛的博客,受益匪浅:

http://blog.csdn.net/sunanger_wang/article/details/7744025

http://www.opencv.org.cn/forum.php?mod=viewthread&tid=12963

http://blog.csdn.net/scyscyao/article/details/5562024

http://blog.csdn.net/chenyusiyuan/article/details/5967291

最后那位有连续三篇的内容进行了详细的介绍,非常棒。


由于看到那些博客下面的一些问题都没人回答,那些算是细节,但大家知道有时候就是这么一点小时会卡很久。

再好的解释也没源代码和示例图来的快,小弟就把这几天摸索的内容放上来。

我的平台:2个罗技C170摄像头


嘿嘿。。比较简陋



matlab标定:

    相信仔细看过原理以及上面的博客就能用matlab计算出双目的结果,这儿有一点要注意,就是要计算双目参数,左右两个摄像头必须同时拍摄棋盘格,一共20张!我一开始是单独拍摄,后来发现单目的数据可以标定出来,双目的就会报错,,想想原理也是,双目标定必须是同时拍摄的才行呀。这儿贴一段自己写的同时采集图像的代码,按下c,就能保存图像。

#include <opencv2/opencv.hpp>  
#include <iostream>  
using namespace std;  

int pic_num = 13;
char* name_l = (char*)malloc(sizeof(char)*200);
char* name_r = (char*)malloc(sizeof(char)*200);
int main()  
{  
	cout << "测试两个摄像头同时读取数据" << endl;  

	CvCapture* cap_left;  
	CvCapture* cap_right;  

	IplImage *img0 , *img1;  
	IplImage *img_left, *img_right;  
	IplImage *img_left_Change, *img_right_Change;  
	cvNamedWindow("camera_left");  
	cvNamedWindow("camera_right");  


	cap_left = cvCreateCameraCapture(1);  
	assert(cap_left != NULL);  
	cap_right = cvCreateCameraCapture(0);  
	assert(cap_right != NULL);  

	while(1)  
	{  
		cvGrabFrame(cap_left);
		cvGrabFrame(cap_right);

		img0 = cvRetrieveFrame(cap_left);//img0 1 只是指针,这个可以在单独的采图线程里刷新
		img1 = cvRetrieveFrame(cap_right);

		if( !img0 || !img1)
		{  
			cout << "camera0 error" << endl;  
			break;  
		}  

		img_le
  • 5
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值