2D图像映射到3D模型

本文介绍了如何使用OpenCV库中的函数进行3D模型的透视投影,通过定义相机矩阵、畸变系数以及旋转和平移向量,将3D碗状模型在相机坐标系下的点转换成2D图像上的投影,并在图像上显示出来。
摘要由CSDN通过智能技术生成

我们认为3D模型是在相机坐标系下的三维点,我们虚拟一个相机点在图上正上方,图像呈现的是3D模型在图像被拍下的效果。由此建立映射关系。
···
def perspective_projection(image_path, bowl_vertices, focal_length,cx,cy):
img = cv2.imread(image_path)
height, width, _ = img.shape
# 构建相机矩阵
camera_matrix = np.array([[focal_length, 0, cx],
[0, focal_length, cy],
[0, 0, 1]], dtype=np.float32)

# 构建畸变系数
dist_coeffs = np.zeros((4, 1))

#旋转向量
R = np.zeros((3, 1))

#平移向量
T = np.zeros((3, 1))     

# 将3D碗状模型的顶点坐标转换到2D图像上
img_points, _ = cv2.projectPoints(bowl_vertices, R, T, camera_matrix, dist_coeffs)

# 将顶点坐标转换为整数
img_points = np.int32(img_points).reshape(-1, 2)

# 在图像上绘制3D模型投影
img_proj = img.copy()
for point in img_points:
    cv2.circle(img_proj, tuple(point), 2, (0, 0, 255), -1)

cv2.imshow('Perspective Projection', img_proj)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip 【资源说明】 1、项目源码在上传前,都经过本地成功运行,功能测试无误。请放心下载使用!答辩评审平均分达到97.5分,有问题请及时沟通交流,帮助解决问题,售后有保障。 2、适用人群:计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、机械电子信息等相关专业背景的在校大学生、专业老师 行业从业人员等下载使用。 3、用途:项目代表性强,具有创新性和启发性,故具有挺高的学习借鉴价值。不仅适合小白入门进阶,还可作为毕设项目、课程设计、大作业、比赛初期项目立项演示等。 4、如果基础还不错,又热爱学习钻研,也可基于此项目基础上进行修改进行二次开发。 本人也是技术狂热者,如果觉得此项目对您有价值,欢迎下载使用! 课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip 课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip课设新项目-基于opencv实现数张二维图像三维图像三维重建C++源码(带实验报告).zip
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值