pip install pygame
。# -*- coding:utf-8 -*-
import pygame
import sys #sys是python的标准库,提供Python运行时环境变量的操控
pygame.init() # 内部各功能模块进行初始化创建及变量设置,默认调用
size = width, height = 800, 600 # 设置游戏窗口大小,分别是宽度和高度
screen = pygame.display.set_mode(size) # 初始化显示窗口
pygame.display.set_caption("我的小游戏程序") # 设置显示窗口的标题内容,是一个字符串类型
while True: # 无限循环,直到Python运行时退出结束
for event in pygame.event.get(): # 从Pygame的事件队列中取出事件,并从队列中删除该事件
if event.type == pygame.QUIT: # 获得事件类型,并逐类响应
sys.exit() # 用于退出结束游戏并退出
pygame.display.update() # 对显示窗口进行更新,默认窗口全部重绘
# -*- coding:utf-8 -*-
import pygame
import sys #sys是python的标准库,提供Python运行时环境变量的操控
pygame.init() # 内部各功能模块进行初始化创建及变量设置,默认调用
size = width, height = 800, 600 # 设置游戏窗口大小,分别是宽度和高度
screen = pygame.display.set_mode(size) # 初始化显示窗口
pygame.display.set_caption("我的小游戏程序") # 设置显示窗口的标题内容,是一个字符串类型
# 创建一个 50*50 的图像, 并优化显示
face = pygame.Surface((50, 50), flags=pygame.HWSURFACE)
face.fill(color='white') #填充颜色
while True: # 无限循环,确保窗口一直显示
for event in pygame.event.get(): # 遍历所有用户操作事件
if event.type == pygame.QUIT: # 获得事件类型,判断是否为关闭窗口
sys.exit() # 用于结束程序的运行并退出
# 将绘制的图像添加到主屏幕上,(100,100)是位置坐标,显示屏的左上角为坐标系的(0,0)原点
screen.blit(face, (100, 100))
pygame.display.update() # 对显示窗口进行更新,默认窗口全部重绘
pygame.quit() # 退出pygame
# -*- coding:utf-8 -*-
import pygame
import sys
import carla
import numpy as np
def sensor_image(image):
array = np.frombuffer(image.raw_data, dtype=np.dtype("uint8"))
array = np.reshape(array, (image.height, image.width, 4))
array = array[:, :, :3]
array = array[:, :, ::-1]
surface = pygame.surfarray.make_surface(array.swapaxes(0, 1))
my_display.blit(surface, (0, 0))
return surface
try:
# #######################################################
# === 1, 创建pygame窗口 ===
pygame.init() # 内部各功能模块进行初始化创建及变量设置,默认调用
size = width, height = 800, 600 # 设置游戏窗口大小,分别是宽度和高度
screen = pygame.display.set_mode(size) # 初始化显示窗口
pygame.display.set_caption("我的小游戏程序") # 设置显示窗口的标题内容
my_display = pygame.display.set_mode(size, pygame.HWSURFACE | pygame.DOUBLEBUF)
# pygame_clock = pygame.time.Clock()
# #######################################################
# === 2, 在车辆上创建摄像头获得图像 ===
actor_list = []
# 创建一个客户端,连接到服务器端口
client = carla.Client('localhost', 2000)
client.set_timeout(5.0)
# 获取当前的仿真世界
world = client.get_world()
# 获取当前世界中的蓝图库
blueprint_library = world.get_blueprint_library()
# 从蓝图库中筛选出来model3这个车车
bp = blueprint_library.filter('model3')[0]
print("the vehicle blueprint:", bp)
# 从地图中随机选择一个生成点
spawn_point = world.get_map().get_spawn_points()[0]
# 利用车辆蓝图和地图生成点,创建车辆
vehicle = world.spawn_actor(bp, spawn_point)
# 设置车辆为自动驾驶模式
vehicle.set_autopilot(True)
# 将车辆加入参与者列表,方便后期统一删除
actor_list.append(vehicle)
# #######################################################
# 从蓝图库中筛选出来rgb摄像头蓝图
blueprint = blueprint_library.find('sensor.camera.rgb')
# 设置设摄像头蓝图的镜头参数
blueprint.set_attribute('image_size_x', str(width))
blueprint.set_attribute('image_size_y', str(height))
blueprint.set_attribute('fov', '110')
# 创建一个坐标位置
spawn_point = carla.Transform(carla.Location(x=-4, z=2))
# 创建一个摄像头传感器,并将摄像头安装到车辆上的指定位置处
sensor_camera = world.spawn_actor(blueprint, spawn_point, attach_to=vehicle)
# 将摄像头加入参与者列表,方便后期统一删除
actor_list.append(sensor_camera)
# #######################################################
# 处理传感器数据:将listen到的数据(即image数据)传入lambda表达式进行处理
# sensor_camera.listen(lambda image: image.save_to_disk('output/%06d.png' % image.frame))
sensor_camera.listen(lambda img: sensor_image(img))
while True: # 无限循环,确保窗口一直显示
for event in pygame.event.get(): # 遍历所有用户操作事件
if event.type == pygame.QUIT: # 获得事件类型,判断是否为关闭窗口
sys.exit() # 用于结束程序的运行并退出
pygame.display.update() # 对显示窗口进行更新,默认窗口全部重绘
finally:
pygame.quit() # 退出pygame
for actor in actor_list:
actor.destroy()
print("销毁:", actor)