問題タブ [opencv]

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.

0 投票する
7 に答える
43169 参照

c - OpenCV での AVI ファイルの書き込み

Learn OpenCv,Orielly で提供されているネットとコードの例があります。

何回も試行した後、out.avi ファイルは 0 バイトで書き込まれます。どこで間違ったのだろうか。

以下は私が使用したコードです...

0 投票する
3 に答える
13757 参照

opencv - OpenCv Blob/Contourラベリング

こんにちは私はしばらくの間これに取り組んできましたが、まだ良い解決策がありません。

私はフレームごとにビデオを読んでおり、背景減算を使用して'動きのある領域を特定し、cvFindContours()を使用して移動するオブジェクトの長方形の境界を取得しています。

プログラムが単純に保たれていると仮定すると、人間は2人しかいません。

これらのオブジェクトは、重なり合うことができる方法で移動し、回転し、特定の間隔で離れます。

この人間x2に正しくラベルを付けるにはどうすればよいですか。

cvFindContourは、ランダムな方法で境界を返すことができます。Frame1、Frame2、Frame3....FrameNの場合

最初に、長方形の境界重心を比較して、人間に正しくラベルを付けることができます。人間が重なり合って離れると、このアプローチは失敗します。

元のオブジェクトのピクセルカラーを追跡しようとしました(ただし、人間はかなり似ており、特定の領域は手、脚、髪の毛などの似たような色です)。したがって、十分ではありません。

私は次のような画像統計の使用を検討していました:

CountNonZero()、SumPixels()Mean()Mean_StdDev()MinMaxLoc()Norm()

2つのオブジェクトを一意に区別します。それがより良いアプローチだと思います。

0 投票する
2 に答える
7635 参照

c++ - OpenCV IplImage を SDL_Surface に変換するには?

SDL_Surfaceを取り、それを に変換しIplImage、cvBlobsLib を使用してブロブを見つけ、ブロブを画像上のスポットとしてペイントし、出力IplImageを に戻すプログラムを作成しようとしていSDL_Surfaceます。

私はほぼ完了しています: IplImageback を anに変換することだけSDL_Surfaceがまだ行われていません。この IplImage には 3 つの画像チャネルがあり、ピクセルあたり 8 ビットです。使用できる呼び出しが 2 つあると思います。

私は現在試していSDL_CreateRGBsurfaceFromます。しかし、ピッチ、Rmask、Gmask、および Bmask の正しい値が何であるかはわかりません。(アルファ チャネルがないため、Amask は 0 です。)

これを行う方法を説明して、誰かが私を助けてくれますか?

ありがとう!

編集:たとえば、これは私が使用しようとしたコードです:

(SDL ドキュメンテーションには、「ピッチは、サーフェスのスキャンラインのサイズ (バイト単位)、つまり widthInPixels*bytesPerPixel です。」と書かれています)。これは、「深さ 8、nChannels 3、ピッチ 1920」を出力し、完全に赤い画像を表示します。8 ビット イメージを 24 ビット (チャネルあたり 1 バイト) に変換することで解決できると思いますが、その方法がわかりません。何か案は?

0 投票する
6 に答える
44670 参照

opencv - 8 ビットの OpenCV IplImage* を 32 ビットの IplImage* に変換する方法は?

8 ビットの IplImage を 32 ビットの IplImage に変換する必要があります。ウェブ全体のドキュメントを使用して、次のことを試しました。

ご覧のとおり、私は自分が何をしているのかよくわかりません。知りたいのですが、これを正しく行うことができれば、もっとうれしいです。助けてくれてありがとう!

0 投票する
3 に答える
3819 参照

c++ - OpenCV が cvLoadImage("string.ext") を拒否するのに、cvLoadImage(argv[1]) を受け入れるのはなぜですか?

示された行を次のように置き換えるとcvLoadImage("247.png")、空白のウィンドウが表示され、画像はゼロのままです

exe を実行し、引数として 247.png を指定すると、それはただダンディです。「247.png」をコードに入れてビルドし、Visual Studio 2008 で実行すると失敗します。コマンドプロンプトからビルドして実行すると、動作します。

どうしてこれなの?これを落とさずに前に進むのに少しうんざりしています。

0 投票する
3 に答える
3142 参照

c++ - OpenCV での奇妙な動作

コンピューター ビジョン ライブラリである OpenCV 1.1 を含む Visual C++ 2005 で Windows アプリケーション (CrosslinesDetection と呼ばれる) をコンパイルすると、コンパイル エラーもリンク エラーも発生しませんが、実行すると、ある時点でフリーズし、Windows次のように述べています。

このプログラムは、2 行の OpenCV コードを含む一般的な C++ Windows アプリケーションです。

奇妙な動作は、OpenCV行を含めると、プログラムが例外をスローし、OpenCV行を除外すると、プログラムが正常に動作することです。

OpenCV ライブラリを別のプロジェクトで問題なく使用しました。具体的には、GUI 用の C# プロジェクトと、バックグラウンドで DLL としてコンパイルされた C++ プロジェクトを作成しました。上記の行に対してそのようなソリューションを作成すると、実行中に問題は発生しません。

このエラーの原因は何ですか?

助けてくれてありがとう、ステファン


コメントありがとうございます。

その間、テストには最小限のプロジェクトを使用します。

私はまだ問題を完全には理解していませんが、サードパーティのライブラリ (uEye から) を含めると例外が発生することがわかりました。

プロジェクトで OpenCV と uEye ライブラリの関数を 1 つ使用すると、例外が発生します。OpenCV または uEye から単一の関数を使用すると、例外はスローされません。したがって、これらのライブラリには互換性がないように思われるか、別の問題があります。ただし、それを検出する方法がわかりません。


いいえ、現時点ではありません。最小限の例では、関数は無関係です。1 つの関数はカメラを初期化し、もう 1 つの関数は画像構造を初期化します。


しかし、おそらくエラーは他の場所にあります...

Visual Studio で C++ Windows フォーム アプリケーションを作成しました。フォームにボタンと Form1.h ファイルの対応する関数を追加しました。

そして、Form1.h の先頭に headeras を追加しました。

次に、プリコンパイル済みヘッダー オプションをオフにし、/clr:pure から /clr オプションに変更して、プロジェクトを正常にコンパイルおよびリンクする必要がありました。

しかし、その後、上記の例外がスローされるプログラムを実行します...

C++ Windows フォーム アプリケーションを誤用していて純粋な C++ コードを含めるべきではないのか、それとも OpenCV または uEye ライブラリに本当に問題があるのか​​疑問に思っています。

0 投票する
3 に答える
1928 参照

c++ - C で書かれたライブラリを使用したスマート ポインター

この質問には関係ありませんが、画像処理ライブラリである OpenCV ライブラリで C++ を使用しています。現在、私はデザインの決定を下しています。

C ライブラリである OpenCV には、そのデータ構造 (CvMat など) が構造体として宣言されています。作成するには cvCreateMat などの関数を使用し、解放するには cvReleaseMat などの関数を使用します。C++ プログラマーとして、cv_scopedスコープ外になったときに cvReleaseMat を自動的に呼び出す特別なクラスを作成しました ( のようにboost::scoped_ptr)。

私が今気付いているのは、ケースでも使用できればいいのにということauto_ptrですshared_ptr。時間の無駄は言うまでもなく、自分自身cv_auto_ptrcv_shared_ptrクラスのコードを書くのは悪い考えだと思います。それで解決策を探していて、3つの可能性を思いつきました。

まず、作成済みの cv_scoped クラスを使用できます。名前を に変更してからcv_ptr、次のようなスマート ポインターを使用しますstd::auto_ptr<cv_ptr>。ただし、これに関する厄介なことは、常に 2 回逆参照する必要があることです。

暗黙的な変換を宣言できるように見えることはわかっていますが、実際にはできませんでした.OpenCVの関数のほとんどにはパラメータ void* があるため、暗黙的な変換は呼び出されません. 二重逆参照を行う必要のない方法でこれを行う方法が本当に欲しいです。

第二に、どうにかしてオーバーライドすることができoperator deleteました。これを CvMat (および他のいくつかの) 型に適用したいだけなので、グローバル演算子 delete をオーバーライドしたくありません。ただし、ライブラリを変更できないoperator deleteため、CvMat 構造体に追加できません。したがって、これがどのように機能するかはわかりません。

第三に、自分のauto_ptr, scoped_ptr, and を書き直すことができましたshared_ptr。大規模なクラスではないので、それほど難しくはありませんが、これは設計が悪いと感じています。私がこれを行うとしたら、おそらく次のようなことをするでしょう。

私の状況であなたはどうしますか?これを理解するのを手伝ってください。

0 投票する
3 に答える
5283 参照

c++ - Quicktime の代わりに FFMPEG を使用して Mac で OpenCV をコンパイルする

Linux で OpenCV と FFMPEG を使用して実行するコードを開発しています。Mac を使用してこのコードを開発したいと考えており、Mac で FFMPEG 機能が必要です。

次のようにconfigureを実行できました:

しかし、make を実行すると、次のエラーが発生します。

OpenCV の新しいバージョンである 1.1pre1 を使用してみましたが、同様のエラーが発生しますが、シンボルが異なります。上記と同じ ./configure を使用しています。

--enable-shared=no を追加すると、OpenCV はコンパイルされますが、プログラムは実行されません...

これらのいずれかをデフォルトの --enable-shared でコンパイルする方法に関する提案はありますか?

0 投票する
4 に答える
26846 参照

opencv - データポイント間を補間する方法は?

現在、opencv と qt を使用してデータ ポイントをプロットするソフトウェアを開発しています。不完全なデータから画像を埋めることができる必要があります。私が持っているポイント間を補間したい。誰かが私を助けることができるライブラリまたは関数を推奨できますか? おそらくopencv reMapメソッドだと思いましたが、それを機能させることができないようです。

データは強度値の 2 次元行列です。なんらかのイメージを作りたい。学校のプロジェクトです。

0 投票する
2 に答える
1735 参照

c - 奇妙な OpenCV 距離変換の結果

異常検出を支援するために、しきい値処理されたバイナリ イメージに対して距離変換を実行しようとしています (オブジェクトのエッジ周辺の大きな変化を検出できることを願っています) が、何らかの理由で、距離変換スクリプトを実行すると、奇妙なバンディング タイプの効果が得られます。サンプル ディレクトリの Distance Transform デモ スクリプトで同様のことをテストしましたが、同じ結果が得られました。私が思いついた考えられる理由の 1 つは、距離が 0 ~ 255 のスケールを超えていたため、基本的には境界内に収まるようにモジュラス化されていることです。これについてアドバイスできる経験をした人はいますか? 画像とコードが役立つ場合は、ブログに投稿し ました よろしくお願いします、イアン