资源简介

用C写的,但是其坐标输出有C和C++两个,鼠标点击输出三维坐标,其相机标定用的是MATLAB结果导入,用的VS2010,实际运行成功的,不出我需要修改的是相机标定的xml文件,标定过程参考前面的博文,还有就是修改左右相机的参数cap_left = cvCreateCameraCapture(0); 以及cap_right = cvCreateCameraCapture(1); 我的是0和1,有可能是-1,0或者1和2

资源截图

代码片段和文件信息

#include     
#include     
#include 
#include 
#include 
#include 
#include“TCHAR.H“
#include“5555.h“
#include 

using namespace std;    
using namespace cv; 

Mat disp1_Q;

CvStereoBMState *m_BMstate = cvCreateStereoBMState();   

void stereo_match(int)
{
//m_BMstate->SADWindowSize =2*blockSize+5;
m_BMstate->SADWindowSize =21;
m_BMstate->minDisparity = 0;
//m_BMstate->uniquenessRatio = uniquenessRatio;
m_BMstate->uniquenessRatio = 17;
m_BMstate->preFilterCap = 31;
//m_BMstate->numberOfDisparities = numDisparities * 16 + 16;
m_BMstate->numberOfDisparities = 272;

m_BMstate->textureThreshold = 10;
m_BMstate->speckleWindowSize = 100;
m_BMstate->speckleRange = 32;
m_BMstate->disp12MaxDiff = -1;


}

static void onMouse(int event int x int y int  void* )
{
if (event == CV_EVENT_LBUTTONDOWN)
{
pic_info[0] = x;
pic_info[1] = y;
cout << “x:“ << pic_info[0] << “y:“ << pic_info[1] << endl;
left_mouse = true;
CvScalar scal = cvGet2D(xyz1y x);
cout << “点(“ << x << ““ << y << “)的三维坐标为:“ << endl << scal.val[0]*1.6 << “ “ << scal.val[1]*1.6 << “ “ << scal.val[2]*1.6<< endl;

cout << “in world coordinate: “ << xyz.at(pic_info[1] pic_info[0])<< endl;//获取三维坐标方式2
cout << “x: “ << xyz.at(pic_info[1] pic_info[0])[0] << endl;
cout << “y: “ << xyz.at(pic_info[1] pic_info[0])[1] << endl;
cout << “z: “ << xyz.at(pic_info[1] pic_info[0])[2] << endl;

}
else if (event == CV_EVENT_LBUTTONUP)
{
left_mouse = false;
}
else if ((event == CV_EVENT_MOUSEMOVE) && (left_mouse == true))
{
}
}

//int getPointClouds(cv::Mat& disparity cv::Mat& pointClouds)
//{
// if (disparity.empty())
// {
// return 0;
// }
//
// //计算生成三维点云
// reprojectImageTo3D(disparity pointClouds Q true);
//
// pointClouds *= 1.6;
// for (int y = 0; y < pointClouds.rows; ++y)
// {
// for (int x = 0; x < pointClouds.cols; ++x)
// {
// cv::Point3f point = pointClouds.at(y x);
// point.y = -point.y;
// pointClouds.at(y x) = point;
// }
// }
// pointClouds.copyTo(xyz); //获取三维坐标方式2
//
// split(pointClouds xyzSet);//获取三维坐标方式1
// xyzSet[0].copyTo(depth0);
// xyzSet[1].copyTo(depth1);
// xyzSet[2].copyTo(depth2);
// return 1;
//}


int main(int argc char* argv[])   
{    
    //cout << “测试两个摄像头同时读取数据“ << endl;    
  
    //读取内部参数  
    CvMat *Intrinsics_Camera_Left = (CvMat *)cvLoad(“Intrinsics_Camera_Left.xml“);  
    CvMat *Intrinsics_Camera_Right = (CvMat *)cvLoad(“Intrinsics_Camera_Right.xml“);  
    CvMat *Distortion_Camera_Left = (CvMat *)cvLoad(“Distortion_Camera_Left.xml“);  
    CvMat *Distortion_Camera_Right = (CvMat *)cvLoad(“Distortion_Camera_Right.xml“);  
    CvMat *Translation_matlab = (CvMat *)cvLoad(“Translation.xml“);  
    CvMat *RotRodrigues_matlab = (CvMat *)cvLoad(“RotRodrigues.xml“

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3982  2017-03-23 18:59  555(导入MATLB结果显示视差并显示坐标)\555\555.vcxproj

     文件       1059  2017-03-23 18:59  555(导入MATLB结果显示视差并显示坐标)\555\555.vcxproj.filters

     文件        143  2016-12-22 12:14  555(导入MATLB结果显示视差并显示坐标)\555\555.vcxproj.user

     文件       8808  2017-05-11 13:00  555(导入MATLB结果显示视差并显示坐标)\555\5555.cpp

     文件        421  2017-03-24 10:44  555(导入MATLB结果显示视差并显示坐标)\555\5555.h

     文件        406  2016-12-22 12:15  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.exe.embed.manifest

     文件        472  2017-03-31 10:01  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.exe.embed.manifest.res

     文件        381  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.exe.intermediate.manifest

     文件        135  2017-04-21 16:22  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.lastbuildstate

     文件        990  2017-04-21 16:22  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.log

     文件        713  2016-12-22 12:42  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.vcxprojResolveAssemblyReference.cache

     文件          0  2016-12-22 12:15  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.write.1.tlog

     文件     219424  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\5555.obj

     文件        196  2016-12-22 12:15  555(导入MATLB结果显示视差并显示坐标)\555\Debug\555_manifest.rc

     文件       3326  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\cl.command.1.tlog

     文件      93440  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\CL.read.1.tlog

     文件       1798  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\CL.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link-cvtres.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link-cvtres.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.11476-cvtres.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.11476-cvtres.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.11476.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.11476.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.12976-cvtres.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.12976-cvtres.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.12976.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.12976.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.13688-cvtres.read.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.13688-cvtres.write.1.tlog

     文件          2  2017-04-06 20:30  555(导入MATLB结果显示视差并显示坐标)\555\Debug\link.13688.read.1.tlog

............此处省略80个文件信息

评论

共有 条评论