OpenCV深度图转点云

这篇具有很好参考价值的文章主要介绍了OpenCV深度图转点云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需要先进行畸变校正,再通过深度图转点云。
相机的相关参数需要事先通过标定获得。文章来源地址https://www.toymoban.com/news/detail-697594.html

#include <iostream>
#include <fstream>

#include <opencv2\opencv.hpp>

int main() {
	cv::Mat src = cv::imread("temp/DepthdataZ.tiff", -1);  //读取深度图
	if (src.empty()) {
		return -1;
	}

	//图片长宽
	int image_width = src.cols;
	int image_height = src.rows;

	//焦距、中心点
	double fx = 3393.866416936082260;
	double fy = 3392.939030157020625;
	double cx = 657.783535966715249;
	double cy = 534.244397069343677;

	//镜头畸变参数
	double k1 = -0.023412391369262;
	double k2 = -0.456621699069608;
	double p1 = 0.000738096195024;
	double p2 = 0.001507735545219;
	double k3 = 18.187708920601441;

	//fx, 0, cx
	//0, fy, cy
	//0, 0, 1
	cv::Mat cameraMatrix(3, 3, CV_32FC1, cv::Scalar::all(0));   //内参矩阵3*3

	//k1, k2, p1, p2, k3
	//k1: 主径向畸变系数,一般是正值,代表着镜头的畸变会导致图像中心的像素缩小;
	//k2 : 副径向畸变系数,一般是正值,代表着镜头的畸变会导致图像边缘的像素缩小;
	//p1, p2 : 切向畸变系数,通常很小,代表着图像的畸变会使得像素沿着切线方向移动;
	//k3 : 高阶径向畸变系数,一般很小,主要用于描述镜头的非线性畸变。
	cv::Mat distCoeffs(1, 5, CV_32FC1, cv::Scalar::all(0)); //畸变矩阵1*5

	cameraMatrix = (cv::Mat_<double>(3, 3) << fx, 0, cx, 0, fy, cy, 0, 0, 1);
	distCoeffs = (cv::Mat_<double>(1, 5) << k1, k2, p1, p2, k3);

	//去畸变
	cv::Mat dst;  //保存去畸变后的深度图
	cv::undistort(src, dst, cameraMatrix, distCoeffs, cv::noArray());
	
	//将深度图转点云
	cv::Mat img_z = dst.clone();  //点云z值(即深度图保存的数据<去畸变后>)
	cv::Mat img_x(cv::Size(image_width, image_height), CV_32F);  //点云x值(即要还原的数据)
	cv::Mat img_y(cv::Size(image_width, image_height), CV_32F);  //点云y值(即要还原的数据)

	for (int i = 0; i < image_width; ++i) {
		for (int j = 0; j < image_height; ++j) {
			img_x.at<float>(j, i) = (i - cx) * img_z.at<float>(j, i) / fx;
			img_y.at<float>(j, i) = (j - cy) * img_z.at<float>(j, i) / fy;
		}
	}

	//保存点云
	std::ofstream out("temp/alldata.asc");
	for (int i = 0; i < image_width; i++) {
		for (int j = 0; j < image_height; j++) {
			float _z = img_z.at<float>(j, i);
			float _x = img_x.at<float>(j, i);
			float _y = img_y.at<float>(j, i);

			if ((_z > -9999) && (_z != 0)) {  //过滤无效点
				out << _x << " " << _y << " " << _z << std::endl;
			}
		}
	}
	out.close();

	return 0;
}

到了这里,关于OpenCV深度图转点云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机竞赛 深度学习 python opencv 火焰检测识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的火焰识别算法研究与实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:3分 🧿 更多资料, 项目分享: https://gitee.co

    2024年02月07日
    浏览(49)
  • 计算机竞赛 深度学习 python opencv 动物识别与检测

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的动物识别算法研究与实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:3分 🧿 更多资料, 项目分享: https://gitee.co

    2024年02月07日
    浏览(61)
  • 计算机竞赛 opencv python 深度学习垃圾图像分类系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 opencv python 深度学习垃圾分类系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/p

    2024年02月13日
    浏览(77)
  • 计算机竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉opencv的手势检测 手势识别 算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 普通机器视觉手势检测的基本流程如下: 其中轮廓的提取,多边形

    2024年02月07日
    浏览(74)
  • python+深度学习+opencv实现植物识别算法系统 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月07日
    浏览(81)
  • 计算机竞赛 python opencv 深度学习 指纹识别算法实现

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年02月13日
    浏览(75)
  • 计算机视觉+深度学习+机器学习+opencv+目标检测跟踪(代码+视频)

    计算机视觉、深度学习和机器学习是当今最热门的技术,它们被广泛应用于各种领域,如自动驾驶、医学图像分析、安防监控等。而目标检测跟踪技术则是计算机视觉中的一个重要分支,它可以帮助我们在图像或视频中自动识别和跟踪特定的目标。 下面我们来一一介绍这些技

    2024年02月01日
    浏览(107)
  • python opencv 深度学习 指纹识别算法实现 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年02月06日
    浏览(61)
  • 计算机竞赛 python+深度学习+opencv实现植物识别算法系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月12日
    浏览(71)
  • 计算机竞赛 python+opencv+深度学习实现二维码识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python+opencv+深度学习实现二维码识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/danch

    2024年02月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包