/
vasandi
/
AirSim
Обзор
Документация
Войти
/
vasandi
/
AirSim
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
PythonClient/multirotor/opencv_show.py
75 строк
2 KB
Андрей Васильченко
сборка под ubuntu 26.04
08 июл 2026, 10:15
08 июл 2026, 10:15
d53c5a2
Код
Авторство
О чём код?
# In settings.json first activate computer vision mode: # https://github.com/Microsoft/AirSim/blob/main/docs/image_apis.md#computer-vision-mode import setup_path import airsim # requires Python 3.5.3 :: Anaconda 4.4.0 # pip install opencv-python import cv2 import time import sys def printUsage(): print("Usage: python camera.py [depth|segmentation|scene]") cameraType = "depth" for arg in sys.argv[1:]: cameraType = arg.lower() cameraTypeMap = { "depth": airsim.ImageType.DepthVis, "segmentation": airsim.ImageType.Segmentation, "seg": airsim.ImageType.Segmentation, "scene": airsim.ImageType.Scene, "disparity": airsim.ImageType.DisparityNormalized, "normals": airsim.ImageType.SurfaceNormals } if (cameraType not in cameraTypeMap): printUsage() sys.exit(0) print (cameraTypeMap[cameraType]) client = airsim.MultirotorClient() print("Connected: now while this script is running, you can open another") print("console and run a script that flies the drone and this script will") print("show the depth view while the drone is flying.") help = False fontFace = cv2.FONT_HERSHEY_SIMPLEX fontScale = 0.5 thickness = 2 textSize, baseline = cv2.getTextSize("FPS", fontFace, fontScale, thickness) print(textSize) textOrg = (10, 10 + textSize[1]) frameCount = 0 startTime = time.time() fps = 0 while True: # because this method returns std::vector<uint8>, msgpack decides to encode it as a string unfortunately. rawImage = client.simGetImage("0", cameraTypeMap[cameraType]) if (rawImage == None): print("Camera is not returning image, please check airsim for error messages") sys.exit(0) else: png = cv2.imdecode(airsim.string_to_uint8_array(rawImage), cv2.IMREAD_UNCHANGED) cv2.putText(png,'FPS ' + str(fps),textOrg, fontFace, fontScale,(255,0,255),thickness) cv2.imshow("Depth", png) frameCount = frameCount + 1 endTime = time.time() diff = endTime - startTime if (diff > 1): fps = frameCount frameCount = 0 startTime = endTime key = cv2.waitKey(1) & 0xFF if (key == 27 or key == ord('q') or key == ord('x')): break