首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

opencv棋盘法对齐两个kinect解决思路

2013-09-06 
opencv棋盘法对齐两个kinect大家好,我现在正在用opencv2.4.6和kinect sdk开发多个kinect的程序。在用opencv

opencv棋盘法对齐两个kinect
大家好,我现在正在用opencv2.4.6和kinect sdk开发多个kinect的程序。在用opencv棋盘法做kinect对齐的时候遇到一些问题,以下是核心的代码:

//find the corners
cv::findChessboardCorners(*image, patternSize, corners, CV_CALIB_CB_NORMALIZE_IMAGE|CV_CALIB_CB_ADAPTIVE_THRESH);
cvtColor(*image, gray_image, CV_BGR2GRAY);
cornerSubPix(gray_image, corners, cv::Size(5,5), cv::Size(-1,-1), cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1 ));

//after I collect 20 sets of corners, do calibration
CalcCameraIntrinsic(corner_src, rgb_intr_src, coeff_src);
CalcCameraIntrinsic(corner_dist, rgb_intr_dist, coeff_dist);

cv::stereoCalibrate(patternPoints, corner_src, corner_dist, rgb_intr_src, coeff_src, rgb_intr_dist, coeff_dist,
    cv::Size(width, height), R, T, E, F, 
    cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 50, 1e-6), cv::CALIB_FIX_INTRINSIC);


先用findChessboardCorners找到棋盘角点坐标,再精确处理,在收集完20组数据之后用stereoCalibrate进行配准最后得到一个矩阵R和一个向量T。
把这个转化应用到两个从不同kinect得到的点云之后发现点云并没有对齐,而且每次运行得到的结果有时相差很多。我在每个图片找到角点之后用opencv的drawChessboardCorners函数输出发现点的位置坐标正确。
并且试着分别对两个点云都作了变换但是两个结果都是不齐的。所以应该不是顺序的问题。

现在想不到有什么找到问题的办法了,请各位大神指教!
求指出问题在哪或者找到问题的debug方法。
谢谢!!!!!!! OpenCV Kinect calibration
[解决办法]
参考一下OpenCV自带的相关例子代码?

热点排行