私はOpenCVでオブジェクト検出のプロジェクトを行っています。 、hereアルゴリズムの特徴はacurately検出され、マッチした取得SIFTが、私はあなたが検出された物体の周りに長方形をしたい場合は私のアルゴリズムはKD-ツリーEST EANまず技術を使用しています マッチした特徴の周りrectagleが一致OpenCVでSIFTで抽出されたフィーチャを使用してターゲットオブジェクトの周りを矩形にする方法
9
A
答えて
7
を取得したい使い方あなたはまさにそのコード例を持っています。あなたはホモグラフィの周りにdraw a rectangleする必要があります。
希望に役立ちます。がんばろう。
5
私はOpenCV(modules/features2d/src/surf.cpp)のSURFアルゴリズムに適合し、キーポイントの周囲を抽出する次のコードを使用します。
長方形とROIに基づく他の例の他に、このコードは、フィーチャ検出アルゴリズム(両方ともKeyPoint
構造体で利用可能)によって決定された向きとスケールに従って正しく方向付けされたパッチを返します。
、いくつかの異なる画像上での検出結果の一例:
const int PATCH_SZ = 20;
Mat extractKeyPoint(const Mat& image, KeyPoint kp)
{
int x = (int)kp.pt.x;
int y = (int)kp.pt.y;
float size = kp.size;
float angle = kp.angle;
int win_size = (int)((PATCH_SZ+1)*size*1.2f/9.0);
Mat win(win_size, win_size, CV_8UC3);
float descriptor_dir = angle * (CV_PI/180);
float sin_dir = sin(descriptor_dir);
float cos_dir = cos(descriptor_dir);
float win_offset = -(float)(win_size-1)/2;
float start_x = x + win_offset*cos_dir + win_offset*sin_dir;
float start_y = y - win_offset*sin_dir + win_offset*cos_dir;
uchar* WIN = win.data;
uchar* IMG = image.data;
for(int i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir)
{
float pixel_x = start_x;
float pixel_y = start_y;
for(int j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir)
{
int x = std::min(std::max(cvRound(pixel_x), 0), image.cols-1);
int y = std::min(std::max(cvRound(pixel_y), 0), image.rows-1);
for (int c=0; c<3; c++) {
WIN[i*win_size*3 + j*3 + c] = IMG[y*image.step1() + x*3 + c];
}
}
}
return win;
}
私はスケールが完全にOKであるかどうかわからないけど、それはSURFソースから取得され、結果は私にとって重要です。
関連する問題
- 1. OpenCVを使用して最大の矩形を切り抜く
- 2. Javascriptでのフィーチャ抽出
- 3. OpenCVで検出された矩形領域を別の画像として保存します
- 4. Opencv(Android)で等高線の周りに長方形を描く方法は?
- 5. LIBSVMで使用するイメージからのフィーチャ抽出
- 6. SIFT記述子を使用するOpenCV(C++)は、検出された機能の数を増やしますか?
- 7. OpenCVを使用したSURFまたはSIFTアルゴリズムの異常値の検出
- 8. OpenCVで矩形の高さと幅を見つける方法は?
- 9. すでに抽出されたフィーチャを持つ手書きデータセットの検索
- 10. グリッドの周りの矩形を回転させてプレイヤービューを計算する
- 11. AndroidでOpenCVを使用してプレビューフレームからQRコードを検出して抽出する方法は?
- 12. 点の周りに矩形を回転する
- 13. wxWidgets + OpenCVの矩形クラッシュOnButtonClick()
- 14. OpenCV find矩形の数
- 15. OpenCVでの矩形行列計算
- 16. カテゴリをフィーチャとして使用する線形回帰
- 17. ボタンで作成した後にシーンの周りに複数の矩形を移動する
- 18. ROI(OpenCV)を使用して領域を識別した後に画像上に矩形を描く
- 19. opencv C++とMS VS2010を使用したフォアグラウンド抽出の問題
- 20. OpenCVでブロブ抽出
- 21. qml矩形をドラッグして回転させる方法は?
- 22. xmlで定義された矩形をプログラムで埋め込む方法
- 23. 円の中心点で矩形を回転させる方法
- 24. OpenCV Pythonを使用してすべてのバウンディングボックスを抽出します
- 25. drawTextOnPathを使用して塗りつぶした矩形の下のテキスト
- 26. AForge.NETとC#(顔の上に矩形を描く)を使用した顔検出
- 27. OSXでC++を使用してopencv highguiを使用してアクティブなウィンドウをopencvイメージに設定する方法
- 28. WPVMでMVVMを使用してマウスをドラッグしたときの矩形描画
- 29. linuxコマンドを使用してシーケンシングデータを抽出する方法
- 30. HTML :: TokeParserを使用してデータを抽出する方法
実際に私のプロジェクトでオブジェクトマッチングにRobb HessのSIFTライブラリを使用していますが、要件に応じて一致するコードが実行されますが、一致するオブジェクトの周囲に矩形が表示されます – Punit
このリンクは、長方形を描くのは簡単です。彼らがやっていることを理解し、あなたのコードのホモグラフィHに適用するだけです。 http://nashruddin.com/OpenCV_Region_of_Ivaluerest_(ROI) –
Thnx Jav_rockのコードは非常に役に立ちます。ドキュメント化されたバージョンを入手できます – Punit