2017-08-15 6 views
-2

私はC++にはとても新しく、openCVの研究をたくさん行ってきました。 私は現在、ウェブカメラを使用してモーションディテクタを作成しており、これを使用してリスナのような機能をトリガしています。私は自分のアプリケーションにビジュアル・ビデオは一切必要ありません。私はちょうど動きを感知し、例えばブール値のような出力を与える必要があります。動き検出器としてopenCVを使用する方法(ビデオ出力を探していない)

私はずっとJavaに精通していますが、C++、ラッパー、変換なしで書かれていなければなりません。

誰かが書き込み方向を指すのに役立つことができますか?おそらくチュートリアルや私が見上げるべきものの提案で。私はopenCVよりもむしろ別のライブラリを使うべきです。

+0

私はあなたを正しく理解していれば、ビデオ処理フレームワークを使用して動きを検出することはできますが、ビデオは不要ですか? – eshirima

+0

はい。基本的に私はウィンドウを通してモーションを検出する必要があります。私はビデオを使用していない。私は、スリープモードから動作を検出するとスリープモードになるようにデバイスを起動する必要があります。 –

+0

私はあなたが望むものを達成することはできないと考えています。動きを判断するために何らかの分析を実行するには、何らかの入力またはセンサーフィードが必要です。ビデオを使用したくない場合は、 [モーションセンサー](https://www.safewise.com/resources/motion-sensor-guide)。 – eshirima

答えて

1

出発点として、基本的な画像の減算を使用してそこから取得することをお勧めします。 、形態学的処理のために

firstFrame = readFrame() 

firstFrameGrey = convertToGreyScale(firstFrame) // makes the image B&W 

while True 

    secondFrame = readFrame() 
    secondFrameGrey = convertToGreyScale(secondFrame) 

    difference = sub(firstFrameGrey, secondFrameGrey) 

    threshold() 

    // perform some morphological operations 
    erosion() 
    dilation() 

    findContours() 

// loop over contours and try filtering based off of area, perimeter etc. 
// This filtration will allow you to detect significant changes. 

// update frame 
firstFrameGrey = secondFrameGrey 

異なる値と実験とあなたが得る結果何を参照してください。

基本的なアルゴリズムがあります。 thresholding

Thisチュートリアルの

詳細情報は、形態学的操作を実行する方法について説明します。

輪郭情報は、アルゴリズムは自明であるべきで、OpenCVのは、私が名前のすべてのメソッドを持っているarea API

とともにhereを見つけることができます。

関連する問題