質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3104閲覧

opencvのエラー解決法

yamata

総合スコア36

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/16 03:54

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); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

そのエラーはmain()関数が定義されていないと言うエラーです。
コンソール・アプリの場合、プロジェクトの中でmain()関数を定義する必要があります。
ご提示されたソースには、main()関数がないようです。定義しましょう。
もしくは、もし、他のソースにmain()関数を入れているのでしたら、そのソースをプロジェクトに含めているか確認下さい。

投稿2016/11/16 04:02

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2016/11/16 04:30

"定義してない"じゃない。 省略してるだけだ。
Chironian

2016/11/16 04:34

そのページを見ましたが「このようにして使えばよいですよ」というサンプルで、main()は自分で作って下さいとの立場で書かれているようです。 それに必要な情報が十分に提供されているので、なかなか親切なページと感じます。 この辺は臨機応変さが必要になります。頑張って下さい。
yamata

2016/11/16 04:41

親切にありがとうございます。やってみたいと思います。
guest

0

エラーメッセージから恐らく新規プロジェクト作成の際に、プロジェクトが’Win32 コマンドプロンプト'ではないものを選択したのでは?

投稿2016/11/16 04:02

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/16 04:04

失礼、ソースを確認したらChironianさん指摘の通り'main'が無いから。
yamata

2016/11/16 04:08

先ほどまで実行できていた、プログラムを変更したので、それはないかと考えています。
MasahikoHirata

2016/11/16 04:15

’先まで実行できていた’本当?
yamata

2016/11/16 04:31

はい。本当です。現在、もう一回確認してみましたが、他のファイルだと実行できます。
MasahikoHirata

2016/11/16 04:34

では’他のファイル’も’main'無い?どこからプログラムを開始するの?
episteme

2016/11/16 04:37

int main を void FeatureMatching に置き換えちゃった(ためにmainが消えた)んじゃネーノ?
MasahikoHirata

2016/11/16 07:57

本来は’main()'から’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) // マッチング結果をクロスチェックするかどうか ’への引数を設定して呼ぶのでは?これらの引数が無ければ動かないとおもいますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問