ホームページ > バックエンド開発 > C++ > OpenCV を使用してネットワーク カメラからフレームにアクセスするにはどうすればよいですか?

OpenCV を使用してネットワーク カメラからフレームにアクセスするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-09 13:11:02
オリジナル
574 人が閲覧しました

How Can OpenCV Be Used to Access Frames from Network Cameras?

ネットワーク カメラを使用した 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート