ネットワーク カメラを使用した OpenCV: 総合ガイド
ネットワーク カメラを使用する場合、画像処理および分析タスクのためにフレーム データにアクセスすることが重要になることがよくあります。 。この記事では、強力なコンピュータ ビジョン ライブラリである OpenCV を利用して、ネットワーク カメラからフレームを効果的に取得する方法について説明します。
課題への対処
ユーザーからフレームの取得について問い合わせがありました。 OpenCV 1.1pre1を使用したネットワークカメラ。カメラは RTSP 経由で MPEG4 または HTTP 経由で MJPEG をストリーミングしました。広範な調査にもかかわらず、ユーザーは OpenCV で FFMPEG を使用する際に困難に遭遇しました。
OpenCV ソリューション
OpenCV バージョン 2.0 以降の場合、以下に C コード スニペットが提供されています。ネットワーク カメラからフレームを取得します:
#include "cv.h" #include "highgui.h" #include <iostream> int main(int, char**) { cv::VideoCapture vcap; cv::Mat image; const std::string videoStreamAddress = "rtsp://cam_address:554/live.sdp"; if(!vcap.open(videoStreamAddress)) { std::cout << "Error opening video stream or file" << std::endl; return -1; } cv::namedWindow("Output Window"); for(;;) { if(!vcap.read(image)) { std::cout << "No frame" << std::endl; cv::waitKey(); } cv::imshow("Output Window", image); if(cv::waitKey(1) >= 0) break; } }
コードでは、videoStreamAddress は、「http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?」のような MJPEG ストリーム アドレスにすることができます。 mjpg".
H.264 RTSP ストリームからフレームを取得するには、特定の URL コマンドの詳細についてはカメラの API を参照してください。たとえば、Axis ネットワーク カメラの RTSP アドレスは次のようになります。
rtsp://10.10.10.10:554/axis-media/media.amp
このソリューションは、従来の IplImage 構造よりも優先される cv::Mat 構造を利用します。このコードはフレーム表示用の出力ウィンドウを作成し、imshow(...) 呼び出しごとに非効率なウィンドウ作成を回避します。
以上がOpenCV を使用してネットワーク カメラからフレームにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。