资源简介
用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.em
文件 472 2017-03-31 10:01 555(导入MATLB结果显示视差并显示坐标)\555\Debug\555.exe.em
文件 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\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
文件 2 2017-04-06 20:30 555(导入MATLB结果显示视差并显示坐标)\555\Debug\li
............此处省略80个文件信息
- 上一篇:python课件pdf哈工大
- 下一篇:C语言在线考试系统
评论
共有 条评论