AR.Drone2.0とcv::VideoCapture
AR.Drone2.0限定ですが、cv::VideoCaptureを使えば比較的簡単に画像を取得することができます。
と、思うでしょう?私もそう思っていました。
cv::VideoCaptureを用いてAR.Droneから動画を取得する場合、動画に遅延が発生します。
ワンテンポどころではない遅延なので、リアルタイムで画像処理しながら動かすのには向きませんね。
また、cv::VideoCaptureでデコードできるのはH.264の動画だけです(現在のところは)。
MPEG4はなぜか初期化で止まります。
CV DroneがあえてFFmpegで真面目に動画をデコードしているのには理由があるのです。
だったらFFmpeg入れる必要ないんじゃない?
#include <stdio.h>
// OpenCV
#include <opencv2/opencv.hpp>
int main(void)
{
cv::VideoCapture cap;
// ビデオを開く
if (!cap.open("tcp://192.168.1.1:5555") {
printf("AR.Droneを接続してください\n");
return -1;
}
// メインループ
while (!GetAsyncKeyState(VK_ESCAPE)) {
// 画像の取得
cv::Mat image;
cap >> image;
// 表示
cv::imshow("AR.Drone", image);
cv::waitKey(1);
}
return 0;
}
と、思うでしょう?私もそう思っていました。
cv::VideoCaptureを用いてAR.Droneから動画を取得する場合、動画に遅延が発生します。
ワンテンポどころではない遅延なので、リアルタイムで画像処理しながら動かすのには向きませんね。
また、cv::VideoCaptureでデコードできるのはH.264の動画だけです(現在のところは)。
MPEG4はなぜか初期化で止まります。
CV DroneがあえてFFmpegで真面目に動画をデコードしているのには理由があるのです。
スポンサーサイト