問題タブ [opencvdotnet]
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.
vb.net - エラー:opencv に基づくアプリケーション開発
Windowsコンソールアプリケーションvs2008を使用してopencvコードを実行し、それをdllとして作成してWindowsアプリケーションvb.netで使用しました。実行中にこのエラーが発生しました。間違えた場所がわかりませんでした。エラーは次のようなものです
aranga.dll は、私のコーディング opencv コーディング パーツを持つ私の dll です。この問題の解決を手伝ってください。前もって感謝します。
c - OpenCV: cvHoughCircles 使用時のエラー
cvHoughCircles を使用して、次の画像で 2 つの白い楕円形を見つけています。
最初にしきい値処理を使用して白い領域を特定し、次にハフ変換を使用しました。ただし、以下に示すように、出力は正しくありません。
何が起こっているのか理解できませんか?なぜ 3 つの円が検出され、なぜ 1 つだけが正しく検出されるのですか? 助言がありますか?
以下は私のコードです:
編集:
ハフ変換では満足のいく結果が得られないので、別の方法を試してみます。図の各白いブロブは同じサイズ (サイズは既知) であり、ブロブ間の距離も既知であると想定できます。左の白いブロブの左側に接する垂直線 (接線) を見つけることができる重要な方法はありますか? この接線がわかると、境界の位置がわかります。次に、x=(この位置 + 半径 (既知))、y= この位置に円を描きます。いくつかの重要な方法を使用して、そのような x 座標と y 座標を見つけることはできますか?
以下のように変更することで解決しました。
出力は次のとおりです。
matlab - OpenCV MATLAB:特定の強度プロファイルを持つ線を描く方法は?
以下は、画像内
の線の任意の手描きの強度プロファイルです。
タスクは線を引くことです。プロファイルは、円弧または楕円に近似できます。これは、カメラのキャリブレーションのために行っています。私は実際の産業用カメラを持っていないので、キャリブレーションに必要な補正をシミュレートしようとしています。
上記のようなプロットに従うピクセル値が必要なため、質問を言い換えることができます。プログラムを使用して(できればopencvを使用して)これを行い、行に何千ものピクセルがあるため、これらの値を手動で入力したくありません。
アルゴリズム/疑似コードで十分です。また、実際の強度プロファイルを持っていないことに注意してください。そうでなければ、それらの値を読み取っていたでしょう.
いつそのような状況に遭遇しますか?
カメラから写真を撮り(完全な白を想定)、オブジェクトをテーブルに置き、カメラを垂直方向にその真上に置くとします。カメラから垂直に下向きに画像の中央に当たる光は、エッジで反射する光と比較して強度が強くなります。画像内の任意の線でピクセル値を測定すると、上記のような強度曲線が得られます。とりあえずカメラを持っていないので、この状況をエミュレートしたいと思います。これを達成する方法は?
matlab - 動画内の移動物体の速度測定アルゴリズム
スマートフォンに搭載されたカメラを使用して、移動中の車のビデオを撮影しました。ビデオは非常に高解像度であり、ロスレス エンコーディングが行われたことを前提としています。(当然サイズは大きくなります。) 60fpsで再生しています。ビデオから車の実際の速度を測定する方法は何ですか? (すべての場合に完全な解決策が存在するとは限らないため、特定の条件下での合理的な仮定があれば、それを受け入れます。)
これが不可能な場合、私の次の目標は、ビデオ内の静止物体に対する車の速度測定に行くことです。
編集:
私の場合、カメラは常に静止しており、車は左から右に移動し、一定の速度で移動しています。
私がすでに見た方法
車の移動に合わせて、カメラの前にあるオブジェクト (参照オブジェクト) を既知の速度で移動します。次に、ビデオには両方の移動オブジェクトがあり、一方は既知のもので、もう一方は未知のものです。適切なキャリブレーションにより、車の速度を見つけることができます。しかし、参照オブジェクトを移動する必要がない解決策を探しています。
image-processing - OpenCV: x 軸上のピーク位置を見つけるための最適化された方法
次の画像のピーク (x 軸) の位置が検出されます
画像が垂直の場合、CvMinMax を適用してピークを見つけます。しかし、ここは水平なので苦労しています。CvMinMax を使用してこのピークを特定する方法はありますか? (画像を回転させたくない)
最後のオプションとして、各列を検索する必要がありますが、これは非常にコストがかかるため、実行したくありません。そのようなピークを検索する最適化された方法はありますか?
opencv - CvMatおよびImreadとIpImageおよびCvLoadImage
OpenCv2.4の使用
画像を読み込むには2つのオプションがあります。
どちらを使用するのが良いですか?2つを混合してみたところ、セグメンテーション違反が発生しました。
image - OpenCv: for ループで画像を回転させるとアプリケーションがハングする
次のコードでは、セグ フォールトが発生し、一時的にストール/ハングして動作しません。
しかし、以下は非常にうまく機能します。
Cvrotateは画像を回転させている機能で、回転した画像は表示用のopencv関数で表示しています。
なぜwaitkey(); ここで必要ですか?ディスプレイは、CVrotate のジョブが完了した後にのみ呼び出す必要があることを理解しています。同様に、次の反復は、表示が終了する前ではなく終了したときに開始されると想定しています。教えてください。
image - OpenCV: OpenCV を使用して 2 つの画像をマージする
CvCopy(); ボックス 2 のサイズをボックス 1 と等しくする最善の方法は何ですか? 適用することができます:
編集:
おそらく私は質問を適切に入れていませんでした。なので、言い直しています。画像 2 (上図) が与えられた場合、以下のように変換します。
基本的に、黒い境界線を追加する必要があります。画像が歪むため、サイズ変更は機能しません。言い換えれば、画像の周りの定義された厚さにゼロを追加する必要があります。
また、空で表示されていますが、これらの画像 (ボックス) には、表示されていないオブジェクトが含まれている場合があります。
opencv - CvloadImage をバイパスしてリアルタイム データを操作する
これは、Opencv を使用して画像を表示および処理する方法です。
以下に概説するように、私の目標を達成するのを手伝ってもらえますか?
次のような 2 番目のコード スニペットでは、ハードディスクの読み取り/書き込み操作を使用していないことに注意してください。
基本的に、私はリアルタイムのシナリオで作業しているため、時間のかかる をバイパスしていますcvLoadImage
。明らかに、データをハードディスクに保存していません。私のデータ全体はまだBuffer B
. これにより、アプリケーションにとって重要な時間を節約できます。
注:Buffer B
実際には、適用cvminmaxloc
など、 でさらに多くの処理を行う予定です。しかし、これらすべての機能には、私の場合のようなバッファではなく、ディスクからロードされたイメージが必要です。
ハードディスクに保存されているイメージではなく、バッファで作業するという私の目標を達成するために、正しい方向に向けることができますか? openCV の機能を理解するのに何か間違いがありますか?
アップデート:
imdecode
バッファから画像を読み取るために使用できる以下の提案。上記で説明したように、実際には OpenCv 関数を使用して画像の処理を行います。たとえばCVMinMaxLoc
、
Buffer
Image in の代わりに最初の引数として入れることができcvThreshold( )
ますか? そうでない場合Buffers
、openCv 関数を使用して (ピクセル値を含む) を処理する代わりに何ができますか? バッファを操作する直接的な方法がない場合、この目標を達成するための間接的な方法は何ですか? 回避策は何ですか?
要するに、処理を行う前にデータをハードディスクに移動したくありません。
c# - 特定のコーデックを使用した Emgu CV VideoWriter
画面をリアルタイムでキャプチャするには、Emgu CV ライブラリの VideoWriter クラスを使用する必要があります。
今問題になっているのはファイルサイズです...そのため、特定のコーデックを使用する必要があります。
これまでのところ、投稿したコードを試しました:
// VideoWriter プロトタイプ: VideoWriter(String fname, Int32 comprescode, Int32 pfs, Int32 width, Int32 height, Boolean isColor);
VideoWriter captureOutput;= new VideoWriter(@"test.avi", -1, 1, width, height, true);
その結果、コーデックを選択できるビデオ圧縮ダイアログが表示されました。
Microsoft Windows Media Video 9 コーデックを選択しましたが、ファイル サイズの問題を解決するには、このコーデックを使用する必要があるようです。
プログラムが実行されるたびに選択する代わりに、プログラムで (ソース コードで) 選択します。
CvInvoke.CV_FOURCC('I', 'Y', 'U', 'V') などで適用できるコーデック コードがいくつかありますが、Windows Media Video 9 のアイデアはありません。
私が経験しているように、誰かが同じ問題に直面したかどうか疑問に思っています。
どんなアイデアでも大歓迎です。ありがとう〜