✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

获取图像

创建时间:2024-12-03 更新时间:2024-12-03 阅读次数:1378 次

import pybullet as p
import pybullet_data as pd
import time
import numpy as np
import cv2

p.connect(p.GUI)
# p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0)
p.setAdditionalSearchPath(pd.getDataPath())
plane = p.loadURDF("plane.urdf")
startPos = [0, 0, 0.5]
startOrientation = p.getQuaternionFromEuler([0, 0, 0])
boxId = p.loadURDF("r2d2.urdf", startPos, startOrientation)

cameraDistance = 3
position, orientation = p.getBasePositionAndOrientation(boxId)
p.resetDebugVisualizerCamera(cameraDistance, cameraYaw=80, cameraPitch=-30, cameraTargetPosition=position)
view_matrix = p.computeViewMatrixFromYawPitchRoll(cameraTargetPosition=position,
                                                  distance=cameraDistance,
                                                  yaw=0,
                                                  pitch=-30,
                                                  roll=0, upAxisIndex=2)
proj_matrix = p.computeProjectionMatrixFOV(fov=60, aspect=float(960) / 720,
                                           nearVal=0.1,
                                           farVal=100.0)
(_, _, px, _, _) = p.getCameraImage(width=600, height=600,
                                    viewMatrix=view_matrix,
                                    projectionMatrix=proj_matrix,
                                    renderer=p.ER_BULLET_HARDWARE_OPENGL)
rgb_array = np.array(px, dtype=np.uint8)
rgb_array = np.reshape(rgb_array, (600, 600, 4))
rgb_array = rgb_array[:, :, :3]
render_array_rgb = cv2.cvtColor(rgb_array, cv2.COLOR_BGR2RGB)
cv2.imwrite("r2d2.png", render_array_rgb)

time.sleep(3)

p.disconnect()

运行结果如下所示:

提醒

注意上图中有两个视觉角度:resetDebugVisualizerCamera和view_matrix。前者表示全局大图场景,后者表示左侧小图场景。如果想保持相同的视觉角度,直接使用下面代码即可:

(_, _, px, _, _) = p.getCameraImage(600,600)
本教程共28节,当前为第18节!
本教程最新修订时间为:2026-07-24 11:58:56

📌 面试天下网:一款便捷的大模型学习口袋书,让富士康流水线的打工人也能摸到改命逆天的机会!
📌 网站公告:程序出海:中国程序员当下最大的机遇>>>>>>