C++

説明

C++ SDKは、操作を簡単にするために以下の3つのオープンソースライブラリを使用しています。

  1. HTTP/HTTPSライブラリ https://github.com/yhirose/cpp-httplib HTTPリクエストを送信するために使用

  2. JSON for Modern C++ https://github.com/nlohmann/json JSON文字列を解析するために使用

  3. PNGエンコーダおよびデコーダ https://github.com/lvandeve/lodepng 画像データの保存に使用

インターフェース定義

struct EpicEyeInfo {
    std::string SN;         // シリアル番号
    std::string IP;         // カメラIPアドレス
    std::string model;      // カメラモデル
    std::string alias;      // カメラのエイリアス、Web UIで変更可能
    uint32_t width = 0;     // 画像の幅
    uint32_t height = 0;    // 画像の高さ
};
関数名 機能説明 パラメータと戻り値

std::string getSDKVersion()

SDKバージョンを取得

戻り値: SDKバージョン番号(std::string型)

bool getInfo(std::string ip, EpicEyeInfo &info)

カメラ情報を取得

パラメータ:

ip: カメラのIPアドレス

info: カメラの詳細情報を受け取るEpicEyeInfoオブジェクト(幅と高さを含む)

戻り値: リクエストが成功したかどうかを示すbool型

bool triggerFrame(std::string ip, std::string &frameID, bool pointCloud = true)

フレームをトリガーしてキャプチャ

パラメータ:

ip: カメラのIPアドレス

frameID: トリガー後に返されるフレームID(std::string型)

pointCloud: 点群データをリクエストするかどうかを示すbool型

戻り値: リクエストが成功したかどうかを示すbool型

bool getImage(std::string ip, std::string frameID, void *imageBuffer, int &pixelByteSize)

frameIDに基づいて2D画像を取得

パラメータ:

ip: カメラのIPアドレス

frameID: 取得対象のフレームID

imageBuffer: 画像データを返すvoidポインタ

pixelByteSize: 画像データのバイトサイズを受け取るint型

戻り値: リクエストが成功したかどうかを示すbool型

bool getPointCloud(std::string ip, std::string frameID, float *pointCloudBuffer)

frameIDに基づいて点群データを取得(メモリ管理はSDKユーザー側で実施)

パラメータ:

ip: カメラのIPアドレス

frameID: トリガーで得たフレームID

pointCloudBuffer: 点群データを格納するfloatポインタ(幅×高さ×sizeof(float)×3のメモリが必要)

戻り値: リクエストが成功したかどうかを示すbool型

bool getDepth(std::string ip, std::string frameID, float *depth)

frameIDに基づいて深度マップを取得(メモリ管理はSDKユーザー側で実施)

パラメータ:

ip: カメラのIPアドレス

frameID: トリガーで得たフレームID

depth: 深度マップデータを格納するfloatポインタ(幅×高さ×sizeof(float)のメモリが必要)

戻り値: リクエストが成功したかどうかを示すbool型

bool getConfig(std::string ip, nlohmann::json &configJson, std::string frameID = "")

frameIDに基づいてカメラ設定を取得。frameIDが空文字列""の場合は最新設定を取得

パラメータ:

ip: カメラのIPアドレス

configJson: カメラ設定データを返すnlohmann::jsonオブジェクト

戻り値: リクエストが成功したかどうかを示すbool型

Linux実行

  1. 依存パッケージ: gcc, g++, cmake, make

    Debian系Linuxでは以下のコマンドでインストールできます:

    sudo apt install gcc g++ cmake make
  2. 環境が整った後に:

    mkdir build && cd build
    cmake .. && make -j12

    コンパイルされたライブラリと samples バイナリファイルは、output フォルダに格納されます:

    output/
    ├── bin
    │   ├── CameraConfig
    │   ├── CameraInfo
    │   ├── CameraParameters
    │   ├── EpicEyeCapture
    │   └── SearchCamera
    └── lib
        └── libEpicEyeSDK.a

OpenCVの例

  1. OpenCV環境のインストール:

    sudo apt install libopencv-dev
  2. または、以下のリンクから事前コンパイルパッケージをダウンロードできます: OpenCV事前コンパイルパッケージのダウンロード

    sudo dpkg -i opencv-qytech_4.5.3-5+focal_amd64.deb

Windows実行

WindowsでCMakeおよびClangツールチェーンを使用する場合、Linuxの手順を参考にしてください。

Visual Studioを使用する場合は、VsCodeでcppフォルダを直接開きます。外部依存がないため、特別な設定は不要です。

alt

すべてのビルドを実行:

alt

実行対象を選択して実行:

alt

OpenCVの例

サンプルプロジェクトにはEpicEyeCaptureOpencvプログラムが含まれており、Windows環境でOpenCVを設定する必要があります。

  1. Opencvリリースページから対応するバージョンをダウンロードします。

    alt
  2. プロジェクトディレクトリ(epiceyesdk_samples/cpp/samples/EpicEyeCaptureOpencv/thirdparty)に解凍します。

    alt
  3. Visual StudioでEpicEyeSDKを構成します。

    alt
  4. 「ビルド」→「すべてリビルド」をクリックし、OpenCVライブラリがバイナリ出力フォルダに自動コピーされます。

    alt