BruteForce Matchが「識別できない識別子」をエラーしました.
4576 ワード
本論文の転送先:http://blog.csdn.net/panda1234lee/article/details/8611363
最近Opencvのアップグレードが速くて、2.4.0から2.4.1まで2.4.2まで、これはまだ2.3.1を使っている人に申し訳ないです.そして、新しいバージョンにtbb並列機能が追加されていると聞きました.これらの機能を利用したいので、急いで2.4.2を降りました.
順番に解圧して、c++カタログを設定して、環境変数を設定します.一連の完成後、surfアルゴリズムを使って、pdfドキュメントのコードをvsにコピーしてみました.実行してみたら、だめでした.エラーが発生しました.瞬間的に騙された感じがします.これは公式発表のpdfから最新コードです.
[cpp]view play copy print?
ヽoo.ツ 〓〓include 「opencv 2/core/core.hpp」 ヽoo.ツ 「opencv 2/feature s 2 d/feature s 2 d.hpp」 〓〓include 「opencv 2/highggui/highggui.hpp」 ヽoo.ツ 「opencv 2/nonfree/non free.hpp」 〓〓include 「opencv 2/nonfree/feature s 2 d.hpp」 using namespace std; using namespace cv; char *path 1=「D:\TestData\cvtest\src\left 01.jpg」 char *path 2=「D:\TestData\cvtest\src\left 03.jpg」 要点 main() { Mat src 1=imread(path 1,0) /*namedWindow(「イメージ」、CVUWINDOWAUTOSTIZE); imshow(「イメージ」、 src 1) waitKey(0);*/ Mat src 2=imread(path 2,0) Surf Feature Detector detector(400) vector keyboot 1,keyboot 2; detector.detect(src 1,keyboot 1) detector.detect(src 2,keyboot 2); Surf DescriptorExtractor extractor; Mat descriptor 1、descriptor 2; extractor.co mpute(src 1、keypeot 1、descriptor 1) extractor.co mpute(src 2、keypeot 2、descriptor 2) BruteForce Match matcher; vectormatches; matcher.match(descriptor 1,descriptor 2,matches) namedWindow(「matches」、1) Mat imgumatches; drawMatch(src 1,keyboot 1,src 2,keyboot 2,matches,imgumatches) imshow(「matches」、imgumatches); cv WaitKey(0) return 0; } が足りなくなりました.加えて、以前の間違いは確かになくなりました.
しかし、新たな問題が出てきました.linkに問題があると言っています.未経験の私はgoogle(Googleは強いですよね!!!)を聞くしかないです.牛人はずばりと急所を突いて問題点を指摘しました.For those who would have the same proble、make sure you have ALL the right linker inputs.highgguietc.右ボタン「プロパティ」->「リンク」-「入力」->「依存関係を追加」で入力したlegacyの静的ファイルをオープンします.legacy 242 d.libを入れたらokです.
発生した問題と解決:1、大量の.dllファイル(msvcr 100 d.dllなど)はロードされていません.これはいくつかの関連があるかもしれません.dllファイルのパスはPATHに参加していません.場所を見つけたらPATHに参加します.またはプロジェクトのデバッグオプションの中でソースサーバに対するサポートを設定します.2、参考http://www.cnblogs.com/ll2008swu/archive/2012/07/23/2605639.html 2次元の特徴抽出をする時、Surf Feature Detectorはopencv 2/feature s 2 d/feature s 2 d.hppにいないことが分かりました. opencv 2/nonfree/feature s 2 d.hpp Brute Force Matchで opencv 2/nonfree/feature s 2 d.hppに参加したいですが、上記のファイルを含めて最終的にopencv 2/legacy/legacy.hpp/同時に正常linkとして、Linkerの下に-lopencvを追加します.non free 240(そうでなければ、error LNK 2019:解析不能な外部シンボルの問題が生じる).
VCを使う人はバージョンによってopencv_を作ります.nonfree 242 d.libの位置はLinker経路設定に参加すれば、スムーズに実行できます.
本論文の転送先:http://blog.csdn.net/panda1234lee/article/details/8611363
最近Opencvのアップグレードが速くて、2.4.0から2.4.1まで2.4.2まで、これはまだ2.3.1を使っている人に申し訳ないです.そして、新しいバージョンにtbb並列機能が追加されていると聞きました.これらの機能を利用したいので、急いで2.4.2を降りました.
順番に解圧して、c++カタログを設定して、環境変数を設定します.一連の完成後、surfアルゴリズムを使って、pdfドキュメントのコードをvsにコピーしてみました.実行してみたら、だめでした.エラーが発生しました.瞬間的に騙された感じがします.これは公式発表のpdfから最新コードです.
[cpp]view play copy print?
ヽoo.ツ
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/nonfree/features2d.hpp"
using namespace std;
using namespace cv;
char *path1="D:\\TestData\\cvtest\\src\\left01.jpg";
char *path2="D:\\TestData\\cvtest\\src\\left03.jpg";
int main()
{
Mat src1=imread(path1,0);
/*namedWindow("image",CV_WINDOW_AUTOSIZE);
imshow("image", src1);
waitKey(0);*/
Mat src2=imread(path2,0);
SurfFeatureDetector detector(400);
vector<KeyPoint> keypoint1,keypoint2;
detector.detect(src1,keypoint1);
detector.detect(src2,keypoint2);
SurfDescriptorExtractor extractor;
Mat descriptor1,descriptor2;
extractor.compute(src1,keypoint1,descriptor1);
extractor.compute(src2,keypoint2,descriptor2);
BruteForceMatcher<L2<float>> matcher;
vector<DMatch>matches;
matcher.match(descriptor1,descriptor2,matches);
namedWindow("matches",1);
Mat img_matches;
drawMatches(src1,keypoint1,src2,keypoint2,matches,img_matches);
imshow("matches",img_matches);
cvWaitKey(0);
return 0;
}
群の中で聞いてみたら、みんなも2.4.2を使ったばかりで、頭のファイルの問題だと教えてくれたのは達人だけです.探してみましたが、2.3.1のincludeファイルと2.4.2の違いがとても大きいです.新しいバージョンには多くのものがあります.feature s 2 d.hppというファイルを比べてみたら、feature s 2 d.hppに含まれていたBruteForce Matchがfeature 2 d.hppの中にはありません.他のファイルを探してみました.これは問題を解決する方法ではないと発見しました.googleに聞いてください.検索してみると、本当にこの問題に遭遇した人がいます.確かに頭のファイルの問題です.「菗include」しかし、新たな問題が出てきました.linkに問題があると言っています.未経験の私はgoogle(Googleは強いですよね!!!)を聞くしかないです.牛人はずばりと急所を突いて問題点を指摘しました.For those who would have the same proble、make sure you have ALL the right linker inputs.highgguietc.右ボタン「プロパティ」->「リンク」-「入力」->「依存関係を追加」で入力したlegacyの静的ファイルをオープンします.legacy 242 d.libを入れたらokです.
発生した問題と解決:1、大量の.dllファイル(msvcr 100 d.dllなど)はロードされていません.これはいくつかの関連があるかもしれません.dllファイルのパスはPATHに参加していません.場所を見つけたらPATHに参加します.またはプロジェクトのデバッグオプションの中でソースサーバに対するサポートを設定します.2、参考http://www.cnblogs.com/ll2008swu/archive/2012/07/23/2605639.html 2次元の特徴抽出をする時、Surf Feature Detectorはopencv 2/feature s 2 d/feature s 2 d.hppにいないことが分かりました. opencv 2/nonfree/feature s 2 d.hpp Brute Force Matchで opencv 2/nonfree/feature s 2 d.hppに参加したいですが、上記のファイルを含めて最終的にopencv 2/legacy/legacy.hpp/同時に正常linkとして、Linkerの下に-lopencvを追加します.non free 240(そうでなければ、error LNK 2019:解析不能な外部シンボルの問題が生じる).
VCを使う人はバージョンによってopencv_を作ります.nonfree 242 d.libの位置はLinker経路設定に参加すれば、スムーズに実行できます.