强化学习系列文章(二十三):AirSim Python API图像与图像处理
参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentation
1.simGetImage函数
使用0号相机得到单张图像。返回值是PNG格式的图像。
import airsim #pip install airsim
# for car use CarClient()
client = airsim.MultirotorClient()
png_image = client.simGetImage("0", airsim.ImageType.Scene)
# do something with image
2.simGetImages函数
simGetImages
函数提供了更多可能性,如选择不同相机位置,得到不同类型图像等等,例如单通道的浮点数图像或者三通道的uint8图像。
import airsim #pip install airsim
# for car use CarClient()
client = airsim.MultirotorClient()
responses = client.simGetImages([
# png format
airsim.ImageRequest(0, airsim.ImageType.Scene), # 相机名称,图像类型,是否浮点数,是否压缩图像(默认压缩)
# uncompressed RGB array bytes
airsim.ImageRequest(1, airsim.ImageType.Scene, False, False),
# floating point uncompressed image
airsim.ImageRequest(1, airsim.ImageType.DepthPlanner, True)])
# do something with response which contains image data, pose, timestamp etc
ImageRequest
函数源代码:
class ImageRequest(MsgpackMixin):
camera_name = '0'
image_type = ImageType.Scene
pixels_as_float = False
compress = False
def __init__(self, camera_name, image_type, pixels_as_float = False, compress = True):
# todo: in future remove str(), it's only for compatibility to pre v1.2
self.camera_name = str(camera_name)
self.image_type = image_type
self.pixels_as_float = pixels_as_float
self.compress = compress
常用的ImageType有:
airsim.ImageType.Scene # = 0 最普通的场景,主界面的图像
airsim.ImageType.DepthPlanner # = 1
airsim.ImageType.DepthPerspective # = 2
airsim.ImageType.DepthVis # = 3 景深图像
airsim.ImageType.DisparityNormalized # = 4
airsim.ImageType.Segmentation # = 5 目标分割图像
airsim.ImageType.SurfaceNormals # = 6
airsim.ImageType.Infrared # = 7
3.AirSim图像转Numpy格式
首先获取无压缩的图像,并按如下方式转成Numpy:
r