Отримання відеопотоків, зібраних роботом, дуже корисно для реалізації певних практичних сценаріїв. Процес отримання відеопотоків через SDK виглядає наступним чином.
• Спочатку ініціалізуйте об’єкт робота, як описано в розділі Ініціалізація робота. Вам також потрібно імпортувати модуль camera , оскільки у прикладі буде використано визначення модуля camera :
from robomaster import camera
• Інтерфейс для отримання відеопотоків належить модулю camera. Тому спочатку отримайте об’єкт camera, як описано в розділі Отримання об’єктів модуля. У цьому прикладі для отримання об’єктів модуля використовується метод, описаний у розділі Отримання об’єктів модуля:
ep_camera= ep_robot.camera
• Метод start_video_stream модуля camera має два параметри. Параметр display вказує, чи відображати отримані відеопотоки. Параметр resolution визначає розмір відео. У цьому прикладі описано два способи отримання відеопотоку.
○ Спосіб 1: Отримайте відеопотік і відтворюйте його безпосередньо протягом 10 секунд :
ep_camera.start_video_stream(display=True, resolution=camera.STREAM_360P) time.sleep(10) ep_camera.stop_video_stream()
○ Спосіб 2: Отримайте відеопотік і відобразіть 200 кадрів зображення, використовуючи метод, наданий cv2 .:
ep_camera.start_video_stream(display=False) for i in range(0, 200): img = ep_camera.read_cv2_image() cv2.imshow("Robot", img) cv2.waitKey(1) cv2.destroyAllWindows() ep_camera.stop_video_stream()
Спосіб 1 безпосередньо використовує метод start_video_tream () об’єкта camera для отримання та відтворення відеопотоку, зібраного роботом через SDK. Спосіб 2 отримує відеопотік за допомогою методу start_video_stream об’єкта camera , а потім відтворює отриманий відеопотік за допомогою cv2.inshow ().
• Звільніть відповідні ресурси, як описано в розділі Звільнення ресурсів роботів.
Повний процес отримання, а потім безпосередньо відображення відеоскрипу див. у прикладах example/04_camera/01_video_with_display.py.
import time from robomaster import robot from robomaster import camera if __name__ == '__main__': ep_robot = robot.Robot() ep_robot.initialize(conn_type="sta") ep_camera = ep_robot.camera # 显示十秒图传 ep_camera.start_video_stream(display=True, resolution=camera.STREAM_360P) time.sleep(10) ep_camera.stop_video_stream() ep_robot.close()
Для повного процесу отримання відеопотоку, а потім відображення зображень за допомогою методу, запропонованого cv2, зверніться до прикладу програми examples/04_camera/03_video_without_display.py.
import cv2 from robomaster import robot if __name__ == '__main__': ep_robot = robot.Robot() ep_robot.initialize(conn_type="sta") ep_camera = ep_robot.camera # 显示200帧图传 ep_camera.start_video_stream(display=False) for i in range(0, 200): img = ep_camera.read_cv2_image() cv2.imshow("Robot", img) cv2.waitKey(1) cv2.destroyAllWindows() ep_camera.stop_video_stream() ep_robot.close()