blender导出相机参数

前言:在 Blender 的图形化界面中,没有直接的选项可以导出渲染图片的外参矩阵。你可以通过 Python API 来获取并导出相机的外参矩阵。

blender导出相机参数

1.单张照片

python 复制代码
import numpy as np   
import bpy
# 获取当前活动相机
cam = bpy.context.scene.camera
# 获取相机的外参矩阵
matrix_world = cam.matrix_world
# 将矩阵转换为 numpy 数组
matrix_np = np.array(matrix_world)
# 保存到文件
np.savetxt('E:\\matrix.txt', matrix_np)

2.多张照片(视频)

python 复制代码
import bpy
import numpy as np

# 获取当前场景
scene = bpy.context.scene

# 获取当前活动相机
cam = bpy.context.scene.camera

# 创建一个空的列表来保存所有的矩阵
matrices = []

# 对于场景中的每一帧
for frame in range(scene.frame_start, scene.frame_end + 1):
    # 设置当前帧
    scene.frame_set(frame)
    
    # 获取相机的外参矩阵
    matrix_world = cam.matrix_world
    
    # 将矩阵转换为 numpy 数组并添加到列表中
    matrices.append(np.array(matrix_world))
    
    # 将矩阵转换为 numpy 数组
    matrix_np = np.array(matrix_world)
    
    # 保存到文件,每一帧保存为一个文件
    np.savetxt(f'E:\\briefcase\\matrix_{frame}.txt', matrix_np)

# 将所有的矩阵保存到一个文件中
np.save('E:\\briefcase\\matrices.npy', matrices)
python 复制代码
numpy.load('matrices.npy')

3.坐标系转换

在 Blender 中,相机的外参矩阵是以右手坐标系表示的,而 OpenCV 使用的是左手坐标系。

python 复制代码
import bpy
import numpy as np

# 获取当前场景
scene = bpy.context.scene

# 获取当前活动相机
cam = bpy.context.scene.camera

# 创建一个空的列表来保存所有的矩阵
matrices = []

# 对于场景中的每一帧
for frame in range(scene.frame_start, scene.frame_end + 1):
    # 设置当前帧
    scene.frame_set(frame)
    
    # 获取相机的外参矩阵
    matrix_world = cam.matrix_world
    
    # 将矩阵转换为 numpy 数组
    matrix_np = np.array(matrix_world)
    
    # 创建一个转换矩阵
    transform = np.array([[1, 0, 0, 0],
                          [0, -1, 0, 0],
                          [0, 0, -1, 0],
                          [0, 0, 0, 1]])
    
    # 将 Blender 的外参矩阵转换为 OpenCV 的坐标系
    matrix_opencv = np.dot(transform, matrix_np)
    
    # 保存到文件,每一帧保存为一个文件
    np.savetxt(f'matrix_{frame}.txt', matrix_opencv)
相关推荐
侯喵喵13 天前
从零开始 blender插件开发
python·blender
碎像13 天前
Blender 几何、线框猴头的构建 笔记
3d·blender
Ning+14 天前
Blender脚本-移除未使用的材质槽
blender·材质
穷人小水滴19 天前
编写 blender python 扩展 (extension / addon)
python·3d·开源·blender·扩展
就叫飞六吧21 天前
四款主流的3D创作和游戏开发软件的核心特点和关系
unity·blender
Raina_H21 天前
Blender进阶:贴图与UV
经验分享·3d·blender·贴图·uv
Raina_H21 天前
Blender进阶:着色器节点
3d·blender·材质·贴图·着色器·uv
Arnold-FY-Chen1 个月前
如何将LiDAR坐标系下的3D点投影到相机2D图像上
相机内参·相机外参·3d坐标·像素坐标·图像坐标·激光雷达坐标·3d到2d转换
碎像1 个月前
blender 理解 积木组合 动画制作 学习笔记
blender
穷人小水滴1 个月前
(科幻) 人形物体的 3D 建模
3d·机器人·blender·科幻