用VS+Opencv从双目立体视差图中重建三维点云(

  • 虫虫123456
    了解作者
  • matlab
    开发工具
  • 1.1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-07-19 10:29
    上传日期
用VS+Opencv从双目立体视差图中重建三维点云(
用VS+Opencv从双目立体视差图中重建三维点云.rar
  • 用VS+Opencv从双目立体视差图中重建三维点云.txt
    2.3KB
内容介绍
转载请注明原创出处:http://blog.csdn.net/u014283958/ //by shuishui shiwenjun 20160926 #include <pcl/visualization/cloud_viewer.h> #include <iostream> #include <pcl/io/io.h> #include <pcl/io/pcd_io.h> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; using namespace pcl; int user_data; //相机内参,根据输入改动 const double u0 = 1329.49 / 4;//由于后面resize成原图的1/4所以有些参数要缩小相同倍数 const double v0 = 954.485 / 4; const double fx = 6872.874 / 4; const double fy = 6872.874 / 4; const double Tx = 174.724; const double doffs = 293.97 / 4; void viewerOneOff(visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(0.0, 0.0, 0.0); } int main() { PointCloud<PointXYZRGB> cloud_a; PointCloud<PointXYZRGB>::Ptr cloud(new PointCloud<PointXYZRGB>); Mat color1 = imread("im0.png"); Mat depth = imread("Sword1_perfect_d.png"); ////Resize //color1.resize(); Mat color; resize(color1, color, Size(color1.cols/4,color1.rows/4), 0, 0, CV_INTER_LINEAR); //imshow("h",color); //waitKey(0); int rowNumber = color.rows; int colNumber = color.cols; cloud_a.height = rowNumber; cloud_a.width = colNumber; cloud_a.points.resize(cloud_a.width * cloud_a.height); for (unsigned int u = 0; u < rowNumber; ++u) { for (unsigned int v = 0; v < colNumber; ++v) { /*unsigned int num = rowNumber*colNumber-(u*colNumber + v)-1;*/ unsigned int num = u*colNumber + v; double Xw = 0, Yw = 0, Zw = 0; Zw = fx*Tx / (((double)depth.at<Vec3b>(u, v)[0]) + doffs); Xw = (v+1 - u0) * Zw / fx; Yw = (u+1 - v0) * Zw / fy; cloud_a.points[num].b = color.at<Vec3b>(u, v)[0]; cloud_a.points[num].g = color.at<Vec3b>(u, v)[1]; cloud_a.points[num].r = color.at<Vec3b>(u, v)[2]; cloud_a.points[num].x = Xw; cloud_a.points[num].y = Yw; cloud_a.points[num].z = Zw; } } *cloud = cloud_a; visualization::CloudViewer viewer("Cloud Viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); while (!viewer.wasStopped()) { user_data = 9; } return 0; }
评论
    相关推荐
    • opencv程序
      OpenCV程序包含双目摄像机标定,棋盘图像矫正,立体像对校正,立体匹配,三维重建模块。然后用OpenGL显示重建效果,并可以通过键盘方向键旋转
    • 基于Opencv的双目立体匹配及其重建
      通过配置OpenCV,在VC6.0下实现双目立体匹配,包括基于稀疏点、密集点的匹配及其重建
    • opencv+ c++ 图像重建系统
      基于opencv+ c++ 的图像重建系统,可以参考一下,有数据,有源码。
    • 双目视觉opencv opengl三维重建
      双目视觉opencv opengl三维重建双目视觉opencv opengl三维重建双目视觉opencv opengl三维重建,请修改代码中opencv对应版本号
    • opencv实现多角度重建
      根据多角度拍摄图像进行三维重构 能得出三维模型
    • 利于opencv的三维重建代码
      利于opencv的三维重建代码,各个步骤清晰,每个步骤都有详细的解释
    • 基于opencv的三维重建程序
      这是基于opencv的计算机视觉技术书中的一个程序实例,本人觉得很不错,学习三维立体重建的朋友们可以看看啊 这是基于opencv的计算机视觉技术书中的一个程序实例,本人觉得很不错,学习三维立体重建的朋友们可以看看...
    • 基于opencv的三维重建程序
      这是基于opencv的计算机视觉技术书中的一个程序实例,本人觉得很不错,学习三维立体重建的朋友们可以看看啊 这是基于opencv的计算机视觉技术书中的一个程序实例,本人觉得很不错,学习三维立体重建的朋友们可以看看...
    • 3D结构光重建+OpenCV
      相机 投影仪三维扫描源代码基于opencv,相机标定,投影仪标定,输出三维数据等
    • 基于opencv的三维重建代码
      这是基于opencv编写的三维重建代码,是初学opencv和三维重建的优秀参考资料