opencvで局所特徴量を用いた処理を行おうとしているのですが、初めてのエラーがでました。
エラー内容は、
error LNK2019:未解決の外部シンボル_mainが関数_tmainCRTStartupで参照されました。
以上になります。
今回初めて追加したモジュールは、nonfreeだけです。
初めてのエラーのためわかりません。
解決方法よろしくお願いします。
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <opencv2\opencv.hpp> #include <opencv2\core\core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp> #include <sstream> #include <iomanip> #include <opencv2/nonfree/nonfree.hpp> // SIFT・SURFモジュール用 #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_core249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_imgproc249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_highgui249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_objdetect249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_contrib249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_features2d249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_flann249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_gpu249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_legacy249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_ts249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_video249d.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_nonfree249d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_core249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_imgproc249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_highgui249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_objdetect249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_contrib249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_features2d249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_flann249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_gpu249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_legacy249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_ts249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_video249.lib") #pragma comment(lib,"C:\\dev\\opencv-2.4.9\\build\\x86\\vc10\\lib\\opencv_nonfree249.lib") #endif void FeatureMatching( const std::string& filename1, // 画像1のファイル名 const std::string& filename2, // 画像2のファイル名 const std::string& featureDetectorName, // detectorType const std::string& descriptorExtractorName, // descriptorExtractorType const std::string& descriptorMatcherName, // descriptorMatcherType bool crossCheck = true) // マッチング結果をクロスチェックするかどうか { // 画像の読み込み cv::Mat img1 = cv::imread("temp_up.png"); cv::Mat img2 = cv::imread("C:\\opencv_ICImage\\2016-11-1黒ネジ10本30fps\\結果\\result_0092.bmp"); // SIFT・SURFモジュールの初期化 cv::initModule_nonfree(); // 特徴点抽出 cv::Ptr<cv::FeatureDetector> detector = cv::FeatureDetector::create(featureDetectorName); std::vector<cv::KeyPoint> keypoint1, keypoint2; detector->detect(img1, keypoint1); detector->detect(img2, keypoint2); // 特徴記述 cv::Ptr<cv::DescriptorExtractor> extractor = cv::DescriptorExtractor::create(descriptorExtractorName); cv::Mat descriptor1, descriptor2; extractor->compute(img1, keypoint1, descriptor1); extractor->compute(img2, keypoint2, descriptor2); // マッチング cv::Ptr<cv::DescriptorMatcher> matcher = cv::DescriptorMatcher::create(descriptorMatcherName); std::vector<cv::DMatch> dmatch; if (crossCheck) { // クロスチェックする場合 std::vector<cv::DMatch> match12, match21; matcher->match(descriptor1, descriptor2, match12); matcher->match(descriptor2, descriptor1, match21); for (size_t i = 0; i < match12.size(); i++) { cv::DMatch forward = match12[i]; cv::DMatch backward = match21[forward.trainIdx]; if (backward.trainIdx == forward.queryIdx) dmatch.push_back(forward); } } else { // クロスチェックしない場合 matcher->match(descriptor1, descriptor2, dmatch); } // マッチング結果の表示 cv::Mat out; cv::drawMatches(img1, keypoint1, img2, keypoint2, dmatch, out); cv::imshow("matching", out); while (cv::waitKey(1) == -1); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/16 04:09
2016/11/16 04:30
2016/11/16 04:34
2016/11/16 04:41