問題タブ [background-subtraction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenCV(C++)でのバックグラウンド減算
バックグラウンド平均化方法を実装したい。1 秒間に 50 フレームの画像を撮影しましたが、一部のフレームには前景として抽出したい稲妻が含まれています。フレームは固定カメラで撮影され、フレームはグレースケールとして取得されます。私がやりたいことは次のとおりです。
- 背景モデルを取得する
- その後、各フレームを背景モデルと比較して、そのフレームに照明があるかどうかを判断します。
cvAcc() を使用してこれを行う方法についていくつかのドキュメントを読みましたが、これを行う方法を理解するのが困難です。私を導くコードと、これを実装する方法を理解するのに役立つドキュメントへのリンクをいただければ幸いです。
よろしくお願いします。
opencv - opencvの背景の減算
背景シーンの画像と、前にオブジェクトがある同じシーンの画像があります。次に、背景を差し引いたフォアグラウンドのオブジェクトのマスクを作成します。どちらの画像もRGBです。
私はすでに次のコードを作成しました:
私はこれを正しくやっているかどうかわかりませんか?
c++ - OpenCV findContours の問題
背景減算を実行し、findContours を使用して前景オブジェクトの周囲に境界を描画する次のコードがあります。
画像は空白の白い背景ですが、findContours() は画像の 4 つのエッジで輪郭を返しています。これは、見つかった最大の輪郭になり、コード内のロジックを無効にします.これを修正する方法はありますか? 画面が空白のときに null ベクトルを返すようにしたい。
また、このコードを改善して効率を向上させることはできますか?
c++ - OpenCV C ++ / Obj-C:適切なオブジェクト検出
ある種の「ホリデープロジェクト」として、私はOpenCVで遊んでいて、ものを検出して測定したいと思っています。
現在のワークフロー(初期段階-検出):
- グレースケールに変換(cv :: cvtColor)
- アダプティブしきい値を適用します(cv :: adapterThreshold)
- キャニーエッジ検出を適用する(cv :: Canny)
- 輪郭の検索(cv :: findContours)
私の結果はちょっとくだらないです、そして私は進むべき正しい方向が何であるかわかりません。私はすでにcvBlobを現在のセットアップ(OSX 10.7.2、Xcode 4.2.1)で動作させていますが、それはより良い方法ですか?もしそうなら、どうすればそれを正しい方法で実装できますか?
または、最初にバックグラウンド減算が必要ですか?私はそれを試しましたが、その後輪郭を見つけることができませんでした
これが私の画像です:
これが私の出力です。輪郭を最初の画像に戻します。
アップデート
私はそれを私のプログラムで動作させました、そして私の出力は少し異なって見えます…</ p>
c++ - OpenCV エッジの強化
以下のように、ビデオから移動する車を取得するために背景減算を実行しています(移動平均背景モデリング)
この後、findContours() を適用して、車の周りにポリゴンを描画しています。
ご覧のとおり、得られた出力の品質は良くありません。車のエッジを強調して目立つようにし、周囲の異音をカットする方法はありますか? ギャップを埋めるためにモルフォロジー クロージング (dilate -> erode) を実行しようとしましたが、期待どおりの結果が得られませんでした。
image-processing - OPENCV 奇妙なエラー
背景減算を使用していて、コンテンツを表示したい。どういうわけか、メモリ例外が原因でコードが常に壊れているようです。エラーは cvCopy 関数にあるようです。それを理解することはできません。
java - OpenCVAndroidバックグラウンド減算
私は、Androidスマートフォンをメインプロセッサとして使用し、カメラを使用して動きを検出するロボット工学プロジェクトに取り組んでいます。OpenCVからAndroidバイナリパッケージを入手しました正しくインストールされました。OpenCVネイティブカメラを使用して画像をキャプチャし、画面に表示できます。ただし、バックグラウンド減算クラスの使用に問題があります。コンストラクターで新しいBackgroundSubtractorMOGオブジェクトを作成できますが、以下のコードを実行しようとすると、強制終了します。ネイティブコードから「BackgroundSubtractorMOGでサポートされているのは1チャネルと3チャネルの8ビット画像のみ」というエラーが表示されます。Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBAをHighgui.CV_CAP_ANDROID_COLOR_FRAME_RGBに変更してみましたが、強制終了しませんが、画面が真っ暗になります。画面が黒のままで、ビットマップの直後に描画していたfpsカウンター(わかりやすくするため、トラブルシューティングの手順として以下に投稿されたコードから削除)が表示されないため、FRAME_RGBではbmpがまだnullであると確信しています。
この関数のOpenCVC++コード(ここでは388行目)を調べましたが、画像タイプがCV_8UC1またはCV_8UC3でない場合は画像タイプエラーが発生するため、Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBAの代わりにjavaCvType.CV_8UC3を使用してみましたCapture.retrieve()ですが、強制的に閉じられ、「出力フレーム形式はサポートされていません」というエラーが発生しました。
型変換の問題が発生したと思いますが、OpenCVのAndroid固有の画像タイプが、文書化されている通常の画像タイプとどこに適合するのか、私にはわかりません。どんな助けでもいただければ幸いです。
変数:
私のSurfaceViewのrun()関数:
run()で参照されるprocessFrame()関数:
編集:
最終的に機能したソリューション:
background-subtraction - C#でのバックグラウンド減算
背景減算法を勉強しています。
初期化されたライブラリEmgucvを使用すると、必要なものが得られることがわかりました。動くオブジェクトの出力を取得したい。動くものは白、残りのものは黒または固定色である必要があります。
参照用にインターネットからいくつかの資料をダウンロードしましたが、それらはすべて .exe または .bat ファイルとして提供されています。その .bat または .exe ファイルを取得するために使用されるコードを変換または表示する方法はありますか。
image-processing - ピクセルごとのしきい値処理
opencv でピクセルごとにしきい値を設定できるかどうか疑問に思っていました。たとえば、p(x,y) は 100 を超える必要があり、p(x+1,y) は 101 を超える必要があります。
これはバックグラウンド減算として見ることができます。背景の前のすべてが残るように。
こんなことを考えていました。画像があり、次に別の画像があります。私はそれらを差し引きます。これは、残っているすべてがしきい値を超えている必要があることを意味します。
例えば:
右側がカメラ(kinect)起動時の画像です。次に、左側の画像が現在のカメラ フィードです。左側の画像です。
コード :
cvSub(depth, depthInit, difference, null);
何も変わらないので、これはもっと黒くなるはずです(ノイズがあることは理解できます)
これは、負の値が残っているためでしょうか。
事前にThx