В настоящее время я работаю с дроном Bebop 2 от попугая, и я хотел бы получить видеопоток от бибопа и использовать кадр, который я получаю.Для управления бибопом я использую эту библиотеку: https://github.com/amymcgovern/pyparrot.
Сначала я попытался использовать opencv, открыв файл sdp, используемый бибопом для потоковой передачи видео с этим кодом:
capture = cv2.VideoCapture('./bebop.sdp')
while True :
rt,img = capture.read()
cv2.imshow("cam",img)
cv2.waitKey(10)
вот содержимое файла sdp:
c=IN IP4 192.168.42.1
m=video 55004 RTP/AVP 96
a=rtpmap:96 H264/90000
но я получил эту ошибку
[rtp @ 0000020b890b3300] Protocol 'rtp' not on whitelist 'file,crypto'!
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:808)
warning: ./bebop.sdp (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:809)
False
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp, line 331
Traceback (most recent call last):
File "pilotage.py", line 109, in <module>
_main_(args)
File "pilotage.py", line 56, in main
cv2.imshow('drone view',im)
cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:331: error: (-215) size.width>0 && size.height>0 in function cv::imshow
Я видел, что это связано с командой ffmpeg, используемойopencv, который не включает опцию -protocol_whitelist. Поэтому я попытался получить изображение напрямую с помощью ffmpeg, используя эту команду
"ffmpeg -protocol_whitelist \"file,rtp,udp\" -i ./bebop.sdp -r 30 -b:v 800k image_%03d.png &"
Но полученные мной изображения были ужасны и бесполезны.Вот так:
Поэтому я попробовал разные варианты, чтобы улучшить качество, но не могу заставить его работать.Спасибо за вашу помощь.
Я нахожусь на Windows 10 и использую последнюю версию Python