• 大小: 24.36MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-01
  • 语言: 其他
  • 标签: 双目视觉  

资源简介

代码对应于本人博客 http://blog.csdn.net/bcj296050240/article/details/52778741。 博客中详细描述了该项目中各段代码的用途。该代码可以实现双目视觉标定和立体匹配、视差计算、深度图生成等功能。并配有标定图片。欢迎交流

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace cv;
using namespace std;

typedef unsigned int uint;

Size imgSize(1280 720);
Size patSize(14 12);           //每张棋盘寻找的角点个数是14*12个
const double patLen = 5.0f;    // unit: mm  标定板每个格的宽度(金属标定板)
double imgScale = 1.0;          //图像缩放的比例因子


//将要读取的图片路径存储在fileList中
vector fileList;
void initFileList(string dir int first int last){
fileList.clear();
for(int cur = first; cur <= last; cur++){
string str_file = dir + “/“ + to_string(cur) + “.jpg“;
fileList.push_back(str_file);
}
}


// 生成点云坐标后保存
static void saveXYZ(string filename const Mat& mat)
{
    const double max_z = 1.0e4;
    ofstream fp(filename);
if (!fp.is_open())
    {  
         std::cout<<“打开点云文件失败“<         fp.close();  
 return ;
    }  
//遍历写入
    for(int y = 0; y < mat.rows; y++)
    {
        for(int x = 0; x < mat.cols; x++)
        {
            Vec3f point = mat.at(y x);   //三通道浮点型
            if(fabs(point[2] - max_z) < FLT_EPSILON || fabs(point[2]) > max_z)   
continue;   
            fp<        }
    }
fp.close();
}


// 存储视差数据
void saveDisp(const string filename const Mat& mat)
{
ofstream fp(filename ios::out);
fp< fp< for(int y = 0; y < mat.rows; y++)
{
for(int x = 0; x < mat.cols; x++)
{
double disp = mat.at(y x); // 这里视差矩阵是CV_16S 格式的,故用 short 类型读取
fp< }
}
fp.close();
}


void F_Gray2Color(Mat gray_mat Mat& color_mat)
{
color_mat = Mat::zeros(gray_mat.size() CV_8UC3);
int rows = color_mat.rows cols = color_mat.cols;

Mat red = Mat(gray_mat.rows gray_mat.cols CV_8U);
Mat green = Mat(gray_mat.rows gray_mat.cols CV_8U);
Mat blue = Mat(gray_mat.rows gray_mat.cols CV_8U);
Mat mask = Mat(gray_mat.rows gray_mat.cols CV_8U);

subtract(gray_mat Scalar(255) blue);         // blue(I) = 255 - gray(I)
red = gray_mat.clone();                        // red(I) = gray(I)
green = gray_mat.clone();                      // green(I) = gray(I)if gray(I) < 128

compare(green 128 mask CMP_GE);             // green(I) = 255 - gray(I) if gray(I) >= 128
subtract(green Scalar(255) green mask);
convertScaleAbs(green green 2.0 2.0);

vector vec;
vec.push_back(red);
vec.push_back(green);
vec.push_back(blue);
cv::merge(vec color_mat);
}

Mat F_mergeImg(Mat img1 Mat disp8){
Mat color_mat = Mat::zeros(img1.size() CV_8UC3);

Mat red = img1.clone(

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

     文件     311296  2016-10-10 15:01  双目立体标定与测量\深度测量9-18\Debug\深度测量9-18.exe

     文件    3001292  2016-10-10 15:01  双目立体标定与测量\深度测量9-18\Debug\深度测量9-18.ilk

     文件    4205568  2016-10-10 15:01  双目立体标定与测量\深度测量9-18\Debug\深度测量9-18.pdb

     文件     118193  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\1.jpg

     文件     116716  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\10.jpg

     文件     117519  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\11.jpg

     文件     120710  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\12.jpg

     文件     123909  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\13.jpg

     文件     119138  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\14.jpg

     文件     124350  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\15.jpg

     文件     123276  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\16.jpg

     文件     122096  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\17.jpg

     文件     125637  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\18.jpg

     文件     124065  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\19.jpg

     文件     119800  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\2.jpg

     文件     122747  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\20.jpg

     文件     126737  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\21.jpg

     文件     129057  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\22.jpg

     文件     119591  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\23.jpg

     文件     125547  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\24.jpg

     文件     122488  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\25.jpg

     文件     121488  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\26.jpg

     文件     116381  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\3.jpg

     文件     116875  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\4.jpg

     文件     123037  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\5.jpg

     文件     123287  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\6.jpg

     文件     128970  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\7.jpg

     文件     123694  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\8.jpg

     文件     117036  2016-09-29 22:49  双目立体标定与测量\深度测量9-18\深度测量9-18\calib_pic\9.jpg

     文件     217519  2016-09-29 10:57  双目立体标定与测量\深度测量9-18\深度测量9-18\Debug\camera_cap.obj

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

评论

共有 条评论