使用python编程,将飞机上携带的摄像机的图片保存下来。

首先完成我的上一篇文章airsim手动控制无人机.

在Epicgame Editor中点击运行后,然后在spyder编译器中运行如下代码:

python代码如下:

# manul UAV
import airsim
import os
import time
import tempfile
import numpy as np
import cv2# connect to the airsim simulator
client = airsim.MultirotorClient()
client.confirmConnection()# setup segmentation
found = client.simSetSegmentationObjectID("[\w]*", 12, True); # --- all objectID = 12   color=[242, 107, 146]
found = client.simSetSegmentationObjectID("UAV[\w]",19,True); # all UAV objectID = 19 color=[0, 53, 65]# initialize the UAV
name = "UAV"+str(1)
client.enableApiControl(True,name)
client.armDisarm(True,name)time.sleep(2)# take images
# get camera images from the car
responses = client.simGetImages([#airsim.ImageRequest("0", airsim.ImageType.DepthVis),  #depth visualization image#airsim.ImageRequest("1", airsim.ImageType.DepthPerspective, True), #depth in perspective projection#airsim.ImageRequest("1", airsim.ImageType.Scene), #scene vision image in png format#airsim.ImageRequest("1", airsim.ImageType.Scene, False, False)  #scene vision image in uncompressed RGBA arrayairsim.ImageRequest("0",airsim.ImageType.Scene, True, True)])print('Retrieved images: %d' % len(responses))tmp_dir = os.path.join(os.getcwd(), "picture")
print ("Saving images to %s" % tmp_dir)
try:os.makedirs(tmp_dir)
except OSError:if not os.path.isdir(tmp_dir):raisefor idx, response in enumerate(responses):filename = os.path.join(tmp_dir, str(idx))if response.pixels_as_float:print("Type %d, size %d" % (response.image_type, len(response.image_data_float)))airsim.write_pfm(os.path.normpath(filename + '.pfm'), airsim.get_pfm_array(response))elif response.compress: #png formatprint("Type %d, size %d" % (response.image_type, len(response.image_data_uint8)))airsim.write_file(os.path.normpath(filename + '.png'), response.image_data_uint8)else: #uncompressed arrayprint("Type %d, size %d" % (response.image_type, len(response.image_data_uint8)))img1d = np.fromstring(response.image_data_uint8, dtype=np.uint8) # get numpy arrayimg_rgb = img1d.reshape(response.height, response.width, 3) # reshape array to 4 channel image array H X W X 3cv2.imwrite(os.path.normpath(filename + '.png'), img_rgb) # write to png

对代码的部分解释:

  1. client.simSetSegmentationObjectID("[\w]*", 12, True)

    这个函数是对于分割图来说的,如果你没有用到分割图,就可以删掉这个函数。

    这句话的意思是对所有的物体的分割ID 全部设置为12,每个id都对应一个颜色

  2. airsim.ImageRequest函数

    (相机ID,图片类型,是否使用pixels_as_float(pfm格式),是否使用压缩图片)

  3. 相机ID

    front_center,0

    front_right,1

    front_left,2

    bottom_center,3

    back_center,4

  4. 图片类型

    Scene=0; 彩色图

    DepthPlanner=1; 深度图

    DepthPerspective = 2;

    DepthVis = 3

    DisparityNormalized = 4

    Segmentation = 5 分割图

    SurfaceNormals = 6 三维重建图

    Infrared = 7 红外图

airsim-使用Image api保存机载摄像机的图片相关推荐

  1. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈

    小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈 一.概述 需要用到的生成二维码组件(可自行下载添加到小程序根目录utils里):https://github.com/demi52 ...

  2. 图片句柄_PC微信逆向:自动保存加密的聊天图片

    前言 本文基于anhkgg大佬的文章<微信PC端技术研究(2)-拿下语音>原文链接:https://bbs.pediy.com/thread-249274.htm anhkgg大佬的这篇文 ...

  3. PC微信逆向:实现自动保存加密的聊天图片

    文章目录 前言 基于保存语音的相关延伸 图片处理的相关流程 自动保存图片相关思路 实战保存聊天图片 对保存图片call的相关分析 代码实现保存聊天图片 实际效果 项目地址 前言 本文基于anhkgg大 ...

  4. Android实战场景 - 保存WebView中的图片到相册

    去年同事写了一个 "在H5中保存图片到相册" 的功能,虽然有大致实现思路,实现起来也没问题,但是感觉同事考虑问题的很周全,当时候就想着去学习一下,但是项目太赶没顾得上,索性现在有时 ...

  5. MATLAB如何保存仿真高清图片(matlab)

    MATLAB如何保存仿真高清图片!(matlab) 1.先打开你的fig文件: 2.在命令窗口输入: print -f1 -djpeg -r600 mypic 并回车,图片就保存到与fig文件的同文件 ...

  6. Android7.0,剪裁后提示“无法保存经过裁剪的图片”

    今天在适配一下 7.0的拍照和选择照片,裁剪,发现拍照可以,选择图片也可以, 但是就是裁剪的时候不行,会弹出提示:无法保存经过裁剪的图片 后来才发现,在设置裁剪要保存的 intent.putExtra ...

  7. ios保存gif到相册_如何在iOS中保存和下载GIF图片

    对于大多数移动开发人员来说,他们经常处理图片,而png和jpg是开发人员经常遇到的图片类型. 但是,对于gif图片怎么存gif图,由于iOS系统不支持直接处理gif,因此处理起来会更加麻烦. 本文将讨 ...

  8. PPT画图(或排版)后保存为高清图片(可自定义分辨率)

    (做个笔记) 第一次发paper,画图只会用PPT,然后复制再粘贴为图片,分辨率远远达不到期刊的要求.一审的时候被审稿人嫌弃"图丑","分辨率"不够.但是修改文 ...

  9. 为什么存png还有白色底_用photoshop保存透明背景的图片为png格式,为什么打开后是白色背景了?...

    Photoshop想要保存透2113明背景的图片要保存PNG格式,保存JPG格式就5261会变成图片.41021.电脑打开Photoshop.2.打1653开Photoshop后,打开一张图片.3.打 ...

最新文章

  1. codesmith用access的mdb文件作数据源的模板引用
  2. 格式化字符串的几种方式
  3. Atom中安装atom-terminal插件来打开命令行运行vue项目
  4. hadoop配置项笔记 - hdfs
  5. 水利水电工程管理与实务电子版习题_每日一练:一级建造师案例题(水利水电工程管理与实务)...
  6. CompletableFuture详解~思维导图
  7. 解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
  8. Java中堆、栈、常量池等概念解析
  9. oracle不存在共享内存域,Oracle数据库共享内存分配不足怎么办
  10. 对TCP/IP协议的一些看法(13):IP路由
  11. User Profile的名称和显示名称
  12. Hbase入门官网教程
  13. 一份很棒的外设驱动库(基于STM32F4)
  14. 快快网络融合CDN是什么
  15. 偶然还是必然——读小蚂蚁的罗马人故事II
  16. 数据治理之主数据建模管理
  17. HDU 5294 Tricks Device(最短路+最大流)
  18. 我xp电脑桌面没有计算机图标不见了,XP电脑开机后桌面图标打开方式全部不见的恢复方法...
  19. Stimulsoft Reports.JAVA 2022.4.3 Crack
  20. 以太坊的区块和存储(一):区块头

热门文章

  1. mysql的配置管理_MySQL 启动流程及配置管理
  2. android输入法服务,Android调用系统输入法
  3. 制作指定比例尺的专题地图
  4. matlab中利用快速傅里叶变换对股票价格进行频域分析
  5. 华南师范大学计算机学院官网,朱佳(华南师范大学计算机学院研究员)_百度百科...
  6. 免费web服务器Tomcat
  7. SIM7600CE-CNSE 4G模块 树莓派/Windows连网指南
  8. ndk 的emac_TMS320C6678 MAC address error出错,请问是不是因为两个核的NDK所使用的EMAC channel 相同造成的呢?...
  9. 【Pandas总结】第八节 Pandas 合并数据集_pd.merge()
  10. SQL Server数据库-表