0

ビデオストリームでしきい値を使用しようとしていますが、機能していません。

私のビデオストリーム:

Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));

次に、適応しきい値処理を実行しようとします(通常のしきい値処理でも機能しません)

for(;;){

    if( wrapper->update()){


        wrapper->getDisplayDepth(depthImage);

        cvAdaptiveThreshold(depthImage, depthImage,255,CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY,75,10);


        imshow("Depth", *depthImage);

    }

    int k = waitKey(25);
    if(k == 27 ) exit(0);
}

このエラーが発生します:

OpenCVエラー:cvarrToMatの不正な引数(不明な配列タイプ)、ファイル/Users/olivierjanssens/source/OpenCV-2.3.1/modules/core/src/matrix.cpp、行646は例外をスローして終了します

私が間違っているのは、表示を取得してストリームを完全に表示することですが、このしきい値を追加すると、前述のエラーが発生します。(私はopencv btwにかなり慣れていません)。

事前にThx!

4

1 に答える 1

2

あなたのdepthImageはcv::Matへのポインタであり、私には奇妙に思えます...

...ただし、C ++構文を使用している場合は、次の定義を使用して、を処理するC++バージョンのadaptiveThresholdを使用することをお勧めします。cv::Mat

void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue,
    int adaptiveMethod, int thresholdType, int blockSize, double C);

cv::その名前空間をまだ使用していない場合は、接頭辞を付ける必要があります。

例えば:

Mat *depthImage; // Obtain this using your method
Mat image = *depthImage;  // Obtain a regular Mat to use (doesn't copy data, just headers)

adaptiveThreshold(image, image,255,CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY,75,10);

imshow("Depth Image", *depthImage);
// OR
imshow("Depth Image", image);
于 2011-11-24T14:28:42.420 に答える