MJPEG で画像を取得する (c++/Visual Studio)

 

本ページは i-PRO株式会社 の有志メンバーにより記載されたものです。
本ページの情報は ライセンス に記載の条件で提供されます。

 

 

 

本ページでは、i-PRO カメラとPCを MJPEG により接続してPC画面へ表示するプログラムを c++ (Visual Studio) で作成する例を紹介します。とても短いプログラムで i-PRO カメラの映像を見ることができます。動作確認は i-PRO mini (WV-S7130)、モジュールカメラ(AIスターターキット)を使って行いましたが、ほとんどの i-PRO カメラでそのまま利用できるはずです。ぜひお試しください。

Python の記事は こちら を参照ください。

[動画] MJPEG でカメラと接続して映像表示してみた様子

 


 

"i-PRO mini" 紹介:

i-PRO mini 画像

 

"モジュールカメラ" 紹介:

AI スターターキット 画像(1) AI スターターキット 画像(2)

 

カメラ初期設定についてはカメラ毎の取扱説明書をご確認ください。

カメラのIPアドレスを確認・設定できる下記ツールを事前に入手しておくと便利です。

 


 

1. MJPEG 表記仕様

i-PRO カメラと接続するための MJPEG 表記仕様は こちら を参照ください。

 

 

2. i-PRO カメラと MJPEG 接続して映像を表示してみる

[概要]

Visual Studio の c++ と OpenCV を使って、PC と i-PRO カメラを MJPEG(Motion JPEG) で接続して映像表示してみます。

 

[評価環境]

コンパイラ : Visual Studio 2022 pro., Version 17.4.4
ライブラリ : OpenCV, 4.6.0
OS : Windows11 home, 22H2

 

※ "Community edition" でも動作する内容です。

 

Check

OpenCV のインストール方法、Visual Studio プロジェクトへの設定方法などは下記ページを参考に行ってください。本ページでは説明を割愛します。

OpenCV をインストールする

 

[プログラム]

サンプルプログラムのソースコードを以下に示します。

 

[プログラムソース "connect_with_mjpeg_1.cpp"]

/*
======================================================================================

[Abstract]
    Try connecting to an i-PRO camera with Motion JPEG.
    Motion JPEG で i-PRO カメラと接続してみる

[Details]
    Let's try first.
    まずはやってみる

[Library install]
    opencv:     You need OpenCV. See "https://i-pro-corp.github.io/Programing-Items/cpp_vs/install_opencv.html"

======================================================================================
*/


#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/utility.hpp>


const std::string user_id    = "user_id";       // Change to match your camera setting
const std::string user_pw    = "user_pw";       // Change to match your camera setting
const std::string host       = "192.168.0.10";  // Change to match your camera setting
const std::string winname    = "VIDEO";         // Window title
const std::string resolution = "1920x1080";     // Resolution
const std::string framerate  = "15";            // Frame rate

const std::string url = "http://" + user_id + ":" + user_pw + "@" + host + "/cgi-bin/nphMotionJpeg?Resolution=" + resolution + "&Quality=Standard&Framerate=" + framerate ;

int main(int argc, const char* argv[])
{
    cv::VideoCapture cap(url);
    cv::Mat frame;
    char ret;

    while (true) {
        cap >> frame;
        if (frame.empty()) {
            break;
        }

        // Please modify the value to fit your PC screen size.
        resize(frame, frame, cv::Size(), 0.5, 0.5);                                     // Setting by magnification.

        // Display video.
        cv::imshow(winname, frame);

        ret = (char)cv::waitKey(1);     // necessary to display the video by cv::imshow().

        // Press the "q" key to finish.
        if (ret == 'q') {
            break;
        }
    }

    cap.release();
    cv::destroyAllWindows();

    return EXIT_SUCCESS;
}

 

 

上記プログラムを動かした様子を動画で示します。

こんなに簡単なプログラムでとても快適な映像表示を実現することができました。

[動画] MJPEG でカメラと接続して映像表示してみた様子 (注意:ストリーム1~4 を全て Off に設定しています)

 

 

 

ソースコード所在

本ページで紹介のソースコードは、下記 github より取得できます。

下記 github のソースコードと本ページの内容は差異がある場合があります。

i-pro-corp/cpp-examples: c++ sample programs for i-PRO camera. (github.com)

 

 

ライセンス

本ページの情報は、特記無い限り下記ライセンスで提供されます。


Copyright 2023 i-PRO Co., Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

 

 

参考

 


 

変更履歴

2023/10/20 - IP簡単設定ソフトウェア、IP Setting Software リンク先を更新, 木下英俊
2023/3/1 - 説明および表現を一部更新, 木下英俊
2023/2/15 - 新規作成, 木下英俊

 

i-PRO - Programming Items トップページ

プライバシーポリシー