0

このテーマに関する質問が 10 件ほど見つかりましたが、回答が得られませんでした。申し訳ありません。

私は基本的に、デジタル一眼レフカメラからの入力で実行するオープン cv アプリケーションを作成しようとしています。

現時点では、処理を使用して、syphon からカメラ入力を取得し、制限付きのオープン cv の処理に使用しています。ポーズ推定で遊ぶ必要があるので、処理でできませんでした。さらに、syphon、opencv、および artoolkit ライブラリを使用しても 10 fps しか得られませんでした...私のプロトタイプには適していません。

open cv 3.0 を使用しようとしています。ウェブカメラを使用してキャリブレーション サンプル ファイルを動作させました。EDSDKを使用してデジタル一眼レフカメラでウェブカメラ入力を置き換えたかっただけです。しかし、参照として見つけたすべてのコードは完全に切り離されています (異なるバージョン/言語)。

SDK に付属の EDSDK サンプル ファイルは複雑すぎるため、コードを推測できません。複雑なことは必要ありません (UI、ボタン、メモリ カードへのアクセスなど)。ウェブカメラとして機能するライブカメラ入力のみ。

これは、opencv で Web カメラ入力を取得するために作成できる最も単純なコードです。

#include "opencv2/opencv.hpp"
#import "EDSDK.h" //probably working fine

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // replace here
    if(!cap.isOpened())  // replace here
        return -1;

    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // replace here
        imshow("frame", frame); //shows it
        if(waitKey(30) >= 0) break;
    }
    return 0;
}

この行でウェブカメラを交換するのに役立つ提案はありますか?

ありがとう

4

1 に答える 1

1

EDSDK.h が存在するということは、カメラ API を使用してデータを取得する必要があることを意味しますVideoCapture cap(0)。箱から出してすぐに使用できる OpenCV は、XIMEA カメラに対してのみ VideoCapture を使用できます (makefile で有効にした場合)。したがって、カメラの API の例で、データ ポインターを取得する方法を見つけて、それを一般的な形式に変換し、コンストラクターを使用してこのポインターを Mat.data にコピーする必要があります。

Mat(image.height, image.width, CV_8UC3, dataPointer)
于 2015-07-23T19:11:17.497 に答える