7

コンピュータービジョンを使ったプロジェクトをやりたいです。主にオブジェクトの検出/識別。いくつかの調査の後、私はOpenCVに戻ってきます。しかし、すべてのチュートリアルは2008年のものです(当時は少し大きかったと思います)。どうやらMac上のPythonではコンパイルされません。私はXcodeからすぐにC++フレームワークを使用していますが、チュートリアルは古く、ドキュメントは私が解析できるものからはずれているため、どのチュートリアルも機能しません。

私がしていることに対するより良い解決策はありますか、そしてOpenCVの使い方を学ぶことについて誰かが何か提案がありますか?

ありがとう

4

3 に答える 3

7

私は OpenCV を使い始める際に同様の問題を抱えていましたが、私の経験からすると、これは実際に OpenCV を学習する上での最大のハードルです。これが私のために働いたものです:

  1. この本: 「OpenCV 2 コンピューター ビジョン アプリケーション プログラミング クックブック」。これは最新の本であり、さまざまなコンピューター ビジョンの問題を解決する方法の例が含まれています (Amazon の目次は「Look Inside!」で確認できます)。OpenCV を簡単に使いこなせるようになり、ライブラリの仕組みに慣れるのに本当に役立ちました。

  2. 他の人が言ったように、サンプルは非常に役に立ちます。この本で省略されていることや簡単にしか説明されていないことについては、通常、サンプルに目を通してみると、より詳細な例を見つけることができます。また、本とサンプルの間で同じ問題を解決するさまざまな方法を見つけることもできます。たとえば、キーポイント/機能を見つけるために、この本は FAST 機能を使用した例を示しています。

    vector<KeyPoint> keypoints;
    FastFeatureDetector fast(40);
    fast.detect(image, keypoints);

    ただし、サンプルでは、​​はるかに柔軟な方法を見つけることができます (使用するキーポイント検出アルゴリズムを選択するオプションが必要な場合)。

    vector<KeyPoint> keypoints;
    Ptr<FeatureDetector> featureDetector = FeatureDetector::create("FAST");
    featureDetector->detect(image, keypoints);

私の経験からすると、物事は最終的にクリックし始め、より具体的な質問については、ブログまたはここ StackOverflow で最新情報を見つけ始めます。

于 2011-12-03T04:16:43.900 に答える
2

いくつか追加させてください。まず、OpenCV への Python バインディングが Mac 上で動作することを保証します。毎日使っています。

多くの人が多くの理由で OpenCV を気に入っています:

  1. ライセンスは良好で、商用製品への統合などに適しています。
  2. 技術的な観点からはかなり良いです。最先端のアルゴリズムのリファレンス実装を提供します。
  3. 代替手段と比較してかなり高速になる傾向があります(私が見ているMatlab)。

人生のすべてと同様に、完璧ではありません。

  1. これは、動くターゲットであるソフトウェア ライブラリの良い例です。OpenCV を使用する 300 行の Python プログラムがあり、OpenCV の新しいバージョンがリリースされると数か月ごとに、新しい関数名/呼び出し規約などに適応するように変更する必要があります。ライブラリは大幅に進歩しますが、年に 3 回同じプログラムを変更しなければならないのは苦痛です。
  2. コンピューター ビジョン自体と同じように学習曲線があり、非常に技術的であり、習得するのは容易ではありません。

代替手段があります (他の長所と短所があります)。Image Processing Toolbox を使用した MATLAB はその 1 つの例です。

于 2011-12-03T00:11:36.573 に答える
0

頭に浮かぶ最も簡単な答えは、少し理解してサンプルコードを読み、あなたのアイデアがうまくいくかどうか試してみることです。APIは変更されており、ほとんどのチュートリアルはOpenCVの最初のバージョン用に作成されており、誰もわざわざ書き直したようには見えません。それにもかかわらず、その背後にあるコアアイデアは変わっていません。したがって、質問に答えるチュートリアルを見つけたが、古いAPIで記述されている場合は、使用されている関数の最新の置き換えについてドキュメントを参照してください。簡単で迅速ではありませんが、機能しているように見えます。最新(実際には2.3)バージョンを使用する場合は、2.1ドキュメント2.3ドキュメント+チュートリアルの両方を使用することをお勧めします。また、ライブラリと一緒にインストールされているはずのサンプルも調べる必要があります。ドキュメントに記載されていない特定の構造やトリックの使用方法については、多くのヒントがあります。最後に、ライブラリ自体のコードの内部を確認することを恐れないでください(自分でコンパイルした場合)。残念ながら、たとえば、どのコードがどのタイプのMatオブジェクトに対応するかを確認するために私が知っている唯一のソースです。

于 2011-12-02T13:34:51.433 に答える