2014年4月20日日曜日

OpenCV を Visual Studio で使う方法

【更新情報】2013年11月19日 最新版2.4.7に 対応しました。2.4.7よりVS2008へのサポートがなくなったため、VS2008関連の解説に取り消し線をつけました。
【更新情報】2014年4月3日 VS2008関連の解説を削除し、VS2013関連の記述を追加しました。
【更新情報】2014年4月20日 最新版2.4.8に対応しました。VS2013関連の記述を修正しました。3.の記述を簡略化しました。
【更新情報】2014年5月22日 最新版2.4.9に対応しました。他のサンプルコードを使うための記述を追加しました。
【更新情報】2014年6月2日 一部のstrikeをコメントアウトしました。また5.でVS再起動の記述を追加しました。サンプルコードを変更しました。

///////////////////////////////////////////
以下の記述はメンテナンスされていません。
初心者は、NuGetから取得する方法をおすすめします。
NuGetからOpenCVをインストールした場合は、1から5までの手順を踏むする必要はありません。
6のサンプルコードを実行してみましょう。(2016年11月30日)
質問は、新ブログの質問受け付け http://phst.hateblo.jp/entry/2016/11/30/081749 へどうぞ。
///////////////////////////////////////////


Visual Studio 2010 Professional, Visual Studio 2012, Visual Studio 2013を使っている人で、OpenCVをx86(通常)で動かす予定の人は、Visual Studioが提供するパッケージ管理ツールNuGetを使うと便利です。このブログでもいずれ解説したいと思いますが、下記のウェブサイトに情報がほぼ網羅されていますので、ぜひ見てください。
http://whoopsidaisies.hatenablog.com/entry/2013/12/03/174709

x64でプログラムを作成したい人は、以下の解説通りにすることをおすすめします。

Windows7、Windows8、Windows8.1環境で、OpenCVをVisual Studioで始める方法の解説です。最も簡単に構築できる方法を試行錯誤して到達したやり方を記述しています。簡単に始めたい人、早く始めたい人、初心者向けの解説ですのでご注意ください。

ファイル名・フォルダ構成・プロジェクト名は本来自由に決めることができますが、ここでは説明を簡略化し初心者にもわかりやすくするために固定にします。

Microsoft Visual Studio 2010、2012、2013のいずれかがインストールされていることが前提です。Visual Studio(VS)をインストールしていない人は先にVSのインストールを行ってください。Expressバージョンでも問題ありませんが、当環境ではUltimateバージョンでテストを行っています。

ここで行う作業は以下の通りです。
  1. OpenCVライブラリのダウンロード
  2. OpenCVライブラリの展開
  3. 静的リンクライブラリの設定
  4. 動的リンクライブラリの設定
  5. VisualStudioの設定
  6. サンプルプログラムの作成と起動
  7. 他のサンプルコードを使う

1.OpenCVライブラリのダウンロード

http://opencv.org/downloads.html

VERSION2.4.9の「OpenCV for Windows」と書いてあるリンクをクリックしてください

初めての人はVERSION2.4.9で試されることを強く勧めます。

sourceforge.netのサイトへ飛ばされ、しばらくするとダウンロードが開始されます。

2.OpenCVライブラリの展開

ダウンロードしたOpenCV-2.4.9.exeを展開します。
.exeを実行すると自己展開が始まるので、Extract to:を「C:\」にして実行してください。約4GBのディスク容量を使います。

展開に成功すれば、「C:\opencv」ができ「C:\opencv\build\include\opencv2」をみると「opencv.hpp」と「opencv_modules.hpp」と複数のフォルダができています。
次の3.はここで作業を行います。

3.静的リンクライブラリの設定(リンカ用ヘッダー作成)

OneDriveからバージョンに合った「opencv_lib.hpp」をダウンロードして、「C:\opencv\build\include\opencv2」のフォルダに置きます。

4.動的リンクライブラリの設定(実行ファイルの場所を指定)

スタートメニューを開き、「システム」と検索し「システム」を開きます(システム***は沢山ありますが、「システム」を選びます。)。システムの詳細設定を開きます。
詳細設定から環境変数を選び、システム環境変数から変数が「Path」のものを選び編集を選択します。

最後に「;」が入っていればその後ろに次の文字列をペーストします。
「;」が入っていなければ「;」を入れてその後ろにペーストします。
この作業はシステムの設定に関わる作業なので、慎重に行ってください。

ペーストする文字列はVS2010 か VS2012 か VS2013 かで分岐します。32bit、64bitはOSのバージョンではなく、プログラムの構成時のプラットフォームです。一般的にVSを立ち上げた時にはx86プラットフォームで動くので、32bitの場合で良いでしょう。

32bit(x86):通常 64bit(x64)
VS2010 C:\opencv\build\x86\vc10\bin C:\opencv\build\x64\vc10\bin
VS2012 C:\opencv\build\x86\vc11\bin C:\opencv\build\x64\vc11\bin
VS2013 C:\opencv\build\x86\vc12\bin C:\opencv\build\x64\vc12\bin
ここまでで、Windowsの設定は完了です。

5.VisualStudioの設定

Visual Studioをすでに起動している場合は、一度終了して起動します。これで4.の設定がVisual Studioに反映されます。
ファイル→新規作成→Visual C++→全般→空のプロジェクト
を選択し、プロジェクト名は適当に決めます。今回は「OpenCV_Test」とします。
プロジェクト→プロパティを選択します。

構成プロパティ→VC++ディレクトリを選択し、インクルードディレクトリの右の▼をクリックし、編集を選択し、「C:\opencv\build\include」を追加します。
さらにライブラリディレクトリに同様に次の文字列を追加します。
32bit(x86):通常 64bit(x64)
VS2010 C:\opencv\build\x86\vc10\lib C:\opencv\build\x64\vc10\lib
VS2012 C:\opencv\build\x86\vc11\lib C:\opencv\build\x64\vc11\lib
VS2013 C:\opencv\build\x86\vc12\lib C:\opencv\build\x64\vc12\lib

6.サンプルプログラムの作成と起動


OpenCVがつかえる状態になったことを確認するために、サンプルプログラムを動かしてみます。ソースファイルで追加、新しい項目、C++ファイル(.cpp)で名前「main.cpp」で追加し、
//インクルードファイル指定
#include <opencv2/opencv.hpp>
//静的リンクライブラリの指定
#include <opencv2/opencv_lib.hpp> //NuGetの場合は必要ない
//名前空間の指定
using namespace cv;
int main()
{
 //width220, height150の画像を作成
 Mat src = Mat::zeros(150, 220, CV_8UC3);
 //赤色で画像にHello Worldを描く
 putText(src, "Hello World", Point(5, 50), FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 0, 200), 2, CV_AA);
 //緑色で画像に線を描く
 line(src, Point(190, 25), Point(190, 45), Scalar(0, 200, 0), 3);
 //要素を直接操作し画像に点を描く
 for (int x = 188; x < 192; x++)
  for (int y = 53; y < 57; y++) //y座標
   for (int i = 0; i < 2; i++) //i < 3にするとBGRすべての要素を200にする
    src.at<uchar>(Point(x * 3 + i, y)) = saturate_cast<uchar>(200);
 //画像を表示
 imshow("", src);
 //ウインドウの表示時間(0はキーが押されるまで閉じない)
 waitKey(0);
 return 0;
}
を記述します。ビルドを行い、デバッグからデバッグなしで開始します。小さなウインドウが出てくると成功です。

7.他のサンプルコードを使う

たとえば、opencv.jpのサイトにはサンプルコードがたくさんあります。しかし、一部のコードはそのまま使うことはできません。次のように変更する必要があります。
#include <cv.h>
#include <highgui.h>
これがある場合は以下に変更してください。
#include <opencv2/opencv.hpp>
#include <opencv2/opencv_lib.hpp>

余談ですが、当ブログではオブジェクト指向の観点から、cvから始まる関数(cvNamedWindowとかcvShowImageとか)やIplImage構造体を用いた古いコードの利用は推奨していません。これらはOpenCV 1.0で使われていたコードであり、初心者とメモリに優しくないからです。(抽象的表現でごめんなさい)

名前空間を使った最新のコードの場合も、次の1行をmainが書いてあるファイルの1行目に追加してください。
#include <opencv2/opencv_lib.hpp>

解説は以上です。うまく行きましたか?トラブルが起きたら下のコメント欄で質問してください。うまく行ったときもコメントしてくれると嬉しいです。

OpenCV を Visual Studio で使う方法の解説
http://physics-station.blogspot.jp/2013/03/opencv-visual-studio_5.html

133 件のコメント:

  1. 4のフォルダはどのフォルダを指しているのでしょうか?opencv2で大丈夫ですか?

    返信削除
    返信
    1. はい、その通りです。

      削除
  2. windows7の64ビットでVS2010の設定をしています。
    ビルドしたところopencv_calib3d244d.libを開くことができません。とでたのですがどこを間違えてしまったのでしょうか?

    返信削除
    返信
    1. .libは「C:\opencv\build\x64\vc10\lib」に入っているはずですが、
      opencvの11/14現在の最新版では、末尾が「247.lib」または「247d.lib」になっているかと思います。
      数字を変更して、「opencv_lib.hpp」の中身と、実体を一致すれば動くかと思います。

      最新版に対応していなくて申し訳ありません。

      削除
    2. ありがとうございます。2.4.4を入れなおしてやってみたら動きました。
      丁寧な返答感謝です

      削除
  3. 「'opencv_haartraining_engined.lib' を開くことができません。」というエラーが出たのですが、どうすればよいでしょうか。
    よろしくお願いします。

    返信削除
    返信
    1. とりあえずopencv_lib.hppからopencv_haartraining_engined.libに関する行をコメントアウトしてみたらエラーがなくなりました!

      削除
  4. 上の方と同じように「'opencv_calib3d247d.lib' を開くことができません。」が出ました。
    数字は、247で一致させているはずなのですが、どうしてでしょうか。
    よろしくお願いします。

    返信削除
    返信
    1. 記事を、最新のバージョンである2.4.7に記述を対応しました。
       3.静的リンクライブラリの設定(リンカ用ヘッダー作成)
      をやり直してもらえば、使えるようになります。

      当方の環境でテストをして動いていますが、もし記述ミスがあれば教えてください

      削除
  5. 記事ありがとうございます。
    二点ほどお伺いしたいことがあるのですが

    ① error C1083:includeファイルが開けません。'opencv2/opencv_lib.hpp': No such file or directory
    ②Intellisense: ソースファイルが開けません"opencv2/opencv_lib.hpp"

    VS2012expressにてエラーを吐いてしまうのですが何が原因でしょうか。

    返信削除
    返信
    1. 「C:\opencv\build\include\opencv2\opencv_lib.hpp」
      このファイルが存在しないことが原因だと思われます。

      削除
  6. ビルドすると
    1>LINK : fatal error LNK1104: ファイル 'opencv_calib3d247d.lib' を開くことができません。
    が表示されます。
    静的リンクライブラリの設定
    をやり直してみてもうまくいきません。
    他に原因があるのでしょうか。

    返信削除
    返信
    1. 誤解を与える表記があったのと、誤記があったので訂正しました。
      \libまでが書くべきパラメータです。
      また、設定したパス(たとえば「C:\opencv\build\x86\vc11\lib」など)に「opencv_calib3d247d.lib」というファイルが存在するかどうかを確認してみてください。

      ・VS2010 32bit の場合
      C:\opencv\build\x86\vc10\lib
      ・VS2012 32bit の場合
      C:\opencv\build\x86\vc11\lib
      ・VS2010 64bit の場合
      C:\opencv\build\x64\vc10\lib
      ・VS2012 64bit の場合
      C:\opencv\build\x64\vc11\lib

      削除
  7. 2.4.8で、hppとパスを修正しても
    LNK1104: ファイル 'opencv_calib3d248d.lib' を開くことができません。
    とでてしまうのは、やはりパスの設定が原因かと、小一時間悩んでます。

    返信削除
    返信
    1. 2.4.8では確認をしていません。ファイルの構成が変わっていると考えられます。
      暫くこのブログを更新できないので、2.4.7で試してもらえませんでしょうか?

      削除
    2. http://imagesensing.seesaa.net/article/200532994.html
      を参考にすればできるようになりましたよ。

      削除
    3. 書き忘れましたが、x64のパソコンでもx86に変更すればいけるみたいです。

      削除
  8. すみませんが、ビルドを成功しました、デバッグしたら「コンピューターにopencv_core247d.dllがないため、プログラムを開始できません
    。」 でも、C:\opencv\build\x64\vc11\binのファイルを開いたら、opencv_core247d.dll がありますげど。どうすればいいかわからなくなりました。

    返信削除
    返信
    1. Visual Studio 2013 ですが

      削除
    2. .dllがVS2013に対応していないため起こる問題だと思われます。

      Visual Studio 2013への対応を記述しました。記述から抜粋します。
      VS2013 の場合
      まず、構成プロパティ→全般→プラットフォームツールセットを選択し、右の▼をクリックし、「Visual Studio 2012 (v110)」を選択し、右下の適用をクリックしてください。
      この設定をすると、「インクルードディレクトリ」と「ライブラリディレクトリ」の設定がリセットされてしまうので、それぞれもう一度行ってください。

      削除
    3. できました。わたしは外国人ですが、管理人さんの説明はとても理解しやすいです。どうもありがとうございました。O(∩_∩)O、

      削除
  9. error LNK1112: モジュールのコンピューターの種類'x64'は対象コンピューターの種類'x86' opencv_core248d.lib と競合しています。というエラーが表示されてしまいます。解決策を教えていただきたいです。

    返信削除
  10. 32bitでコンパイルすることができました。ありがとうございます。ライブラリディレクトリでは、x86とx64両方追加すると、コンピューターの種類'x64'は対象コンピューターの種類'x86' opencv_core248d.lib と競合します。x86だけではテストが成功しました。ちなみに、x64でも使いたい場合どのように設定すればよろしいですか?

    返信削除
    返信
    1. ビルドできるかどうかと、プログラムを実行できるかどうかで分かれます
      ビルドだけしたいのであれば、構成マネージャからプラットフォームで新規作成をしてx64を追加し、「5.VisualStudioの設定」をやり直します。
      プログラムを動かしたい場合は、「4.動的リンクライブラリの設定」を、Visual Studioの起動前に書き換える必要があります。
      ただし、このブログで紹介する方法でやるための方法なので、もっと別の回避策はあります。

      削除
  11. 入れてみて、このサイトにあるサンプルは動いたのですが、OpenCVの本に書いてあるサンプルが動きません。#include や#include や#include などに赤線がひかれてソースファイルが開けないと出ます。これは、OpenCVの導入をミスっているのでしょうか?全くの初心者なので的外れの質問をしているかもしれません、申し訳ないです。

    返信削除
    返信
    1. コードを見ないと、原因がわかりません。コードを書いてもらえますか?
      int main()以降で結構です。

      削除
    2. プレビューで確認してませんで、icludeの後が表示されてませんでしたすいません。cv.h cxcore.h highgui.hとかなんですが、
      int main(int argc, char **argv) {
      char windowNameSource[] = "Source"; // 元画像を表示するウィンドウの名前
      char windowNameDestination[] = "Destination"; // 変換後の画像を表示するウィンドウの名前

      // 画像を読み込む
      IplImage *sourceImage = cvLoadImage("image/lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

      if (sourceImage == NULL){
      // 画像が見つからなかった場合
      printf("画像が見つかりません\n");
      return -1;
      }

      // 画像を生成する
      IplImage *destinationImage = cvCreateImage(cvSize((int)(sourceImage->width * SCALE_X), (int)(sourceImage->height * SCALE_Y)), IPL_DEPTH_8U, 3); // 変換後の画像用IplImage

      // 画像の大きさを変換する
      cvResize(sourceImage, destinationImage, CV_INTER_LINEAR);

      // ウィンドウを生成する
      cvNamedWindow(windowNameSource, CV_WINDOW_AUTOSIZE);
      cvNamedWindow(windowNameDestination, CV_WINDOW_AUTOSIZE);

      // 画像を表示する
      cvShowImage(windowNameSource, sourceImage);
      cvShowImage(windowNameDestination, destinationImage);

      // キー入力を待つ
      cvWaitKey(0);

      // 画像を保存する
      cvSaveImage("image/destination.bmp", destinationImage);

      // メモリを解放する
      cvReleaseImage(&sourceImage);
      cvReleaseImage(&destinationImage);
      // ウィンドウを破棄する
      cvDestroyWindow(windowNameSource);
      cvDestroyWindow(windowNameDestination);

      return 0;
      }

      削除
    3. こちらの環境でテストしたところ、このブログのサンプルプログラムのmainの部分を変更しただけでほぼビルドできました。
      ほぼ、というのはSCALE_XとSCALE_Yがmainの外で#defineなどで設定されているはずで、それを設定しただけです。
      #include は、cv.h cxcore.h highgui.hなども含んでいるので、cv.h等を一つ一つ書く必要はありません。

      削除
    4. //インクルードファイル指定
      #include
      //静的リンクライブラリの指定
      #include
      //名前空間の指定
      using namespace cv;
      上の文をサンプルを入れるときに上書きして消してしまっていました。
      解決しました。どうもありがとうございました。

      削除
  12. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *************************************************************************/

    #ifndef OPENCV_FLANN_LOGGER_H
    #define OPENCV_FLANN_LOGGER_H

    #include
    #include

    #include "defines.h"


    namespace cvflann
    {

    class Logger
    {
    Logger() : stream(stdout), logLevel(FLANN_LOG_WARN) {}

    ~Logger()
    {
    if ((stream!=NULL)&&(stream!=stdout)) {
    fclose(stream);
    }
    }

    static Logger& instance()
    {
    static Logger logger;
    return logger;
    }

    void _setDestination(const char* name)
    {
    errno_t error;
    if (name==NULL) {
    stream = stdout;
    }
    else {
    stream = fopen(name, "w");
    if (stream == NULL) {
    stream = stdout;
    }
    }
    }

    int _log(int level, const char* fmt, va_list arglist)
    {
    if (level > logLevel ) return -1;
    int ret = vfprintf(stream, fmt, arglist);
    return ret;
    }

    public:
    /**
    * Sets the logging level. All messages with lower priority will be ignored.
    * @param level Logging level
    */
    static void setLevel(int level) { instance().logLevel = level; }

    /**
    * Sets the logging destination
    * @param name Filename or NULL for console
    */
    static void setDestination(const char* name) { instance()._setDestination(name); }

    /**
    * Print log message
    * @param level Log level
    * @param fmt Message format
    * @return
    */
    static int log(int level, const char* fmt, ...)
    {
    va_list arglist;
    va_start(arglist, fmt);
    int ret = instance()._log(level,fmt,arglist);
    va_end(arglist);
    return ret;
    }

    #define LOG_METHOD(NAME,LEVEL) \
    static int NAME(const char* fmt, ...) \
    { \
    va_list ap; \
    va_start(ap, fmt); \
    int ret = instance()._log(LEVEL, fmt, ap); \
    va_end(ap); \
    return ret; \
    }

    LOG_METHOD(fatal, FLANN_LOG_FATAL)
    LOG_METHOD(error, FLANN_LOG_ERROR)
    LOG_METHOD(warn, FLANN_LOG_WARN)
    LOG_METHOD(info, FLANN_LOG_INFO)

    private:
    FILE* stream;
    int logLevel;
    };

    }

    #endif //OPENCV_FLANN_LOGGER_H


    エラー 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\opencv\build\include\opencv2\flann\logger.h 67 1 OpenCV_Test

    これは何をすればいいのですか?

    返信削除
    返信
    1. 環境の何かが違うのかなと思います。そのエラーは見たことがないので、確かなことは言えません。
      このブログの通りにやりましたか?

      削除
    2. 導入はできたのですが、ほかのプログラムはうまくいきません。
      管理人さんのプログラムはうまいくんですが・・・

      削除
    3. コードを見ないと何が原因下わかりません
      プログラムのmainの部分を書いてくれるとコメントできます。
      (著作権的に問題がなければ書いてください)

      削除
    4. エラー 1 error C4996: が出たという人へ
      http://whoopsidaisies.hatenablog.com/entry/2013/12/03/174709に記述がありました。
      #define _CRT_SECURE_NO_DEPRECATE を追加するといいそうです

      削除
  13. int main(int argc, char** argv){
    int key; // キー入力用の変数
    CvCapture *capture; // カメラキャプチャ用の構造体
    IplImage *frameImage; // キャプチャ画像用IplImage
    char windowNameCapture[] = "Capture"; // キャプチャした画像を表示するウィンドウの名前

    // カメラを初期化する
    if ((capture = cvCreateCameraCapture(-1)) == NULL) {
    // カメラが見つからなかった場合
    printf("カメラが見つかりません\n");
    return -1;
    }

    // ウィンドウを生成する
    cvNamedWindow(windowNameCapture, CV_WINDOW_AUTOSIZE);

    // メインループ
    while (1) {
    // カメラからの入力画像1フレームをframeImageに格納する
    frameImage = cvQueryFrame(capture);

    // 画像を表示する
    cvShowImage(windowNameCapture, frameImage);

    // 'q'キーが入力されたらループを抜ける
    key = cvWaitKey(1);
    if (key == 'q') {
    break;
    }
    }

    // キャプチャを解放する
    cvReleaseCapture(&capture);
    // ウィンドウを破棄する
    cvDestroyWindow(windowNameCapture);

    return 0;

    これです

    返信削除
  14. 少し前の人のコードもそうでしたが、
    こちらの環境でテストしたところ、このブログのサンプルプログラムのmainの部分を変更しただけでビルドはできました。
    あとは、USBカメラをさしてPCに認識させておけば、動くはずです。
    #include から始まる2行を忘れないでください。ここ重要です。

    返信削除
    返信
    1. ありがとうございました!

      削除
    2. たびたびすみません。
      動いたことには動いたんですが、キャプチャ画像が灰色になって何も映りません。
      他のパソコンでは映るのでカメラの故障ではないと思うんですが・・・

      削除
    3. 申し訳ないのですが、その症状に対する知見がありません。

      削除
  15. ここ最近OpenCV 1.0のコードに対する質問が続きましたので、解説に「他のサンプルプログラムを使う」追加しました。
    コメントしてくれた人ありがとう。

    返信削除
  16. こちらの説明通りに設定し,サンプルのコンパイル・実行はできました.
    しかし,自分で作成したコードを実行したら「opencv_core249d.dllがないため、プログラムを開始できません。」といった内容の警告が.
    しかしC:\opencv\build\x86\vc10\binにファイルは存在していますしこちらの説明通りにPathも通してあるはずなのですが・・・・
    当方,VC10です.

    返信削除
    返信
    1. コマンドプロンプトを起動して、「where opencv_core249d.dll」と打つと、「C:\opencv\build\x86\vc10\bin\opencv_core249d.dll」と出くるか、
      「path」と打つと、文字列の中に「C:\opencv\build\x86\vc10\bin」が含まれているか、確認をしてみてください。
      なお、VSを起動したままpathを通しても、設定は反映されないので、この点も注意してください。

      削除
    2. どうやらVSを起動したままpathを弄っていたようで無事解決しました.
      初歩的な質問に答えていただきありがとうございました.

      削除
  17. わかりやすい説明でよかったです、無事環境導入出来ました。ありがとうございます。

    返信削除
    返信
    1. こちらこそ、最後まで読んでくれてありがとう、コメント残してくれてありがとう

      削除
  18. Windows7 64bit Visual Studio2010で開発しています。
    VC++の「Windows フォームアプリケーション」に静的リンクライブラリとして
    OpenCVを設定したところコンパイルは出来るのですが、

    「'System.TypeInitializationException' のハンドルされていない例外が 不明なモジュールです。 で発生しました。
    追加情報: '<Module>' のタイプ初期化子が例外をスローしました。」

    というエラーが発生してEXEが起動しません。
    何が原因でしょうか?

    ちなみにプラットフォームは「32bit(x86)」でコンパイルは「Debug」で行うとエラーが発生せずただ起動しない。
    「Release」で行うと上記のようなエラーが出てきます。
    原因がわかりましたらご教授ください。お願いします。

    返信削除
    返信
    1. 現象は再現出来ましたが、原因は今のところわかりません。
      clr関連かと思うのですが。

      削除
    2. ありがとうございます。
      とりあえず、OpenCVをクラスライブラリで作成して
      そのDLLを取り込むことで使用できそうなので
      そのようにしていきます。

      記事がすごくわかりやすかったので
      また参考にさせていただきます。

      削除
  19. 記事ありがとうございます。非常にわかりやすかったですが、一点質問があります。

    デバッグしたら「コンピューターにopencv_core249d.dllがないため、プログラムを開始できません。」 でも、C:\opencv\build\x64\vc12\binのファイルを開いたら、opencv_core249d.dll に存在しています。

    私は、VS2013 の場合なので先日他の質問者に答えられていたように
    まず、構成プロパティ→全般→プラットフォームツールセットを選択したのですが、右の▼をクリックしても「Visual Studio 2012 (v110)」を選択肢がでてきません。どうしたらよいのでしょうか?

    返信削除
    返信
    1. vc12というのはVisual Studio 2013(v120)のことなので、Visual Studio 2012を選択する必要はありません。
      4.動的リンクライブラリの設定(実行ファイルの場所を指定)
      を行った後に、Visual Studioは再起動しなくてはなりません。Visual Studioを再起動しても同様の症状が出ればお知らせください。

      削除
    2. ありがとうございます。
      動的リンクライブラリの設定を行ってからVisual Studioの再起動を行うことで、問題が解決できました。

      削除
    3. 同じ問題でひっかっかってました。
      参考になりました。ありがとうございます。

      削除
  20. visual studio 2013で開発をしております。導入や環境設定は一通りできており、いくつかのプログラムを実行してみたらうまくいっておりました。
    しかし、画像のフリップ画像を作るコードをビルドするとおかしなことになります。
    opencv_core.249.libなどを含め6つほどソースコード上に記述してあるのですが,リンクエラーでLNK1104がでてしまいます。以下、詳しいエラー出力です。

    1>------ ビルド開始: プロジェクト:03Flip, 構成:Debug Win32 ------
    1> Flip.cpp
    1>LINK : fatal error LNK1104: ファイル 'opencv_core243d.lib' を開くことができません。
    ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

    なぜエラーでは243.libを開こうとしているのでしょうか?当然243はわたくしのPC上にはありません。
    ソースコードをくまなく見てはみたもののそれらしき部分をみつけることはできなかったです。
    ソースコードをのせることはできないのですがこのような現象が起こる理由は何でしょうか?
    ちなみに今回、パスの設定等はなんども見返し、指定している場所もしっかり249があるlibファイルを指定しております。
    そのため、コード上にファイル名を#pragmaで記述しております。
    わかりにくい文章の上、コードもないので大変お答えしづらいかとは思いますが、お手数ですがご意見をお聞かせください。

    返信削除
    返信
    1. ソースコードがないので想像でお答えするしかありませんが、
      ほかのサイトから流用したプログラムのヘッダーを含めたどこかに、243.libを開こうとしているC#pragmaが設定されているか、
      ないしは、Visual Studioのプロジェクト自体を流用した場合は、プロパティのリンカーの入力のところに「追加の依存ファイル」が設定されており、
      そこで243の設定が書かれているかのいずれかではないかと推測します。

      削除
    2. プロジェクトは最初から自分で作り、ソースファイルとヘッダファイル、リソースファイルを流用しております。
      GUIを作り、コマンドプロンプトでexeファイルを実行してフォームで画像を読み込み反転させるというプログラムです。
      考えられるとしたら主となるソースコードかとおもったのですが、最初の#pragma onceと#includeのあとに
      デバックモードとリリースモード別に#pragmaで249を呼び出しているのでそこではなさそうです。
      追加の依存ファイルに関しても確認したところ空欄で設定されていないのでそこも問題なさそうです。

      となると、考えられるとしたらどこに問題があるでしょうか?

      削除
    3. ソースコードを見ないことにはこれ以上はわからないかと思います。申し訳ございません。

      削除
  21. One Driveが開けません

    We can't show you that page

    Our server is having a problem. We're working to fix it as soon as we can, so try again in a few minutes.
    とでます

    返信削除
  22. うまくいきました!ありがとうございます^^

    返信削除
  23. visual studio 2010 c++/cli で作成されている既存のプロジェクトに
    新たに子フォームを追加して、その中でOpenCVを使用したいのですが、
    各種設定後、ビルドを行うとOpenCVのincludeの中でエラーが発生してしまいます。

    エラー 5 error C2059: 構文エラー : '定数' C:\opencv249\build\include\opencv2\core\types_c.h 1003

    ちなみに、includeとnamespaceの定義を親フォームで定義すると、
    ビルドは通るのですが、実行で親フォームが表示されません。

    ※ここに至る前には既存のソース内で使用していたSystemやSystem::Drawingで定義されている、
    StringやPoint型が重複してしまい
    System::StringやSystem::Drawing::Pointに変更しております。


    *************以下抜粋
    //インクルードファイル指定
    #include
    //静的リンクライブラリの指定
    #include

    namespace 既存のプロジェクト名 {

    using namespace cv;
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    public ref class 子フォームクラス : public System::Windows::Forms::Form
    {
    public:

    返信削除
    返信
    1. c++/cli でopencvは直接動かせないと思います。ラップすれば出来ると思いますが。

      削除
    2. 「名前は名前空間名である必要があります」とエラーが出ます.解決策を教えてください.

      削除
    3. そのエラーには遭遇したことないので、『「名前は名前空間名である必要があります」とエラー』という情報だけでは原因を類推できません。
      OpenCVをダウンロードして展開したフォルダは正しいか、VisualStudioにインクルードファイルとライブラリファイルは正しく設定されているか、VisualStudioのプロジェクトはC++の全般の空のプロジェクトから作成したかなどを確認してみてください。

      削除
  24. 名前空間の件で先ほど書き込みをしたものですが,実行できました.ありがとうございました.

    返信削除
  25. 展開したフォルダが正しくありませんでした.早々にご回答いただきありがとうございました.コピペでフォルダ移しても,展開操作とは違うみたいです.

    返信削除
  26. こちらの記事のおかげでうまくOpenCVを入れることができました。ありがとうございます!

    返信削除
    返信
    1. コメントを残してくれてありがとう。
      OpenCVを使えるようになって良かったです。

      削除
  27. こんばんは「指定したファイルが見つかりません」となってしまいます。
    どうすればいいでしょうか?
    visial studio 2013です。

    返信削除
  28. 上の方と同じなのかもしれませんが、visial studio 2013で開発しており
    「error LNK1104: ファイル 'opencv_calib3d249d.lib' を開くことができません。」
    と出てしまいます。
    どこかで間違えているのでしょうか?

    返信削除
    返信
    1. 5.VisualStudioの設定
      で設定したフォルダに、表示のあるopencv_calib3d249d.libなどがあるかどうかチェックしてみてください。

      削除
    2. Hello World!
      どうにか、表示できました。
      ありがとうございました。

      削除
  29. LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。
    と出たのですがどこで間違えたのでしょうか?

    返信削除
    返信
    1. 5.VisualStudioの設定の「ライブラリディレクトリ」の設定で「親またはプロジェクトの規定値から継承」のチェックが外れているとその現象が起きることが有ります。チェックを入れて動かしてみてください。

      削除
    2. ありがとうございました。

      削除
  30. main.cppを作成する際のフォルダ指定はどこが望ましいのでしょうか?
    自分で指定してしまったら、デバックを開始しても「指定されたファイルが見つかりません」とメッセージボックスが表示されてしまいます。

    返信削除
    返信
    1. Visual Studio上で、ソースファイルで追加、新しい項目、C++ファイル(.cpp)で名前「main.cpp」で追加してください。
      エクスプローラー上で作成したり、場所は変えたりしないでください。

      削除
    2. 「OpenCV_Test」を作成する際のフォルダはどこでもいいのでしょうか?

      削除
    3. 基本的にどこでもかまいません。デフォルトでは
      C:\Users\(ユーザー名)\Documents\Visual Studio (VSバージョン)\Projects
      この下に作成されるかと思います。

      削除
    4. どうもありがとうございます。
      続けてお聞きしたいのですが・・・前の質問にある「error LINK1104: ファイル'opencv_calib3d249d.lib'を開くことができません。」とエラー画面がでます。
      5.のフォルダに「opencv_calib3d249d.lib」はありました。
      なぜ動かないのでしょうか?

      windows8 VS10です。

      削除
  31. Hello Worldでました、ありがとうございます^^

    返信削除
  32. 現在Android向けにアプリ開発を行ているのですが、この方法でOpenCVを導入した場合アプリにしたときにも動作しますでしょうか?

    返信削除
  33. ほぼ書いてある通りに導入したのですが、VS2013で「コンピュータにopencv_core249d.dllがないのでプログラムが開始できません」とエラーが出ます。vc12のbinファイルにはちゃんと入っていました。原因が分かるならよろしくお願いします。

    返信削除
    返信
    1. 「4.動的リンクライブラリの設定」この設定が正しくないか、設定後にVisual Studioを再起動していないかのどちらかだと思います。

      削除
    2. Program Filesに入れてたんですが、環境変数のPathの所がProgramFilesと、スペースを抜かしていました。
      そこを修正したら動きました。本当にありがとうございます。

      削除
  34. すいません初心者です。
    書いてあるとおりにやりましたが、
    includeファイルが開けません、
    ~が定義されていません
    など17個エラーが出てしまいました・・
    原因わかりますでしょうか?

    返信削除
    返信
    1. 格闘した結果
      error LNK1104: ファイル 'opencv_calib3d249d.lib' を開くことができません。
      のみになりました。
      しかし他の質問者のところにもありますが
      ファイルはしっかり存在しています。なぜでしょうか??

      削除
    2. 「5.VisualStudioの設定」このどこかで間違っている可能性が高いです。

      削除
  35. こんにちは。
    このサイトの手順を参考にさせてもらい、開発環境構築して、プログラムを組んでいる者です。分かりやすく解説して下さり、非常に助かってます。
    サイトの手順通りサンプルプログラムを動かすことはできました。VS2010,Opencv2.4.9を使用しています。

    プログラム上で三角関数を使用する為に、

    #include "math.h"

    を記述し、sin()関数を使用したのですが、以下のようなエラーが発生しました。

    「IntelliSense: オーバーロードされた関数 "sin" の複数のインスタンスが引数リストと一致します」
    「error C2668: 'sin' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)」

    エラーの解決方法を幾つか調べたのですが、良い答えが見つからず困っています。
    何が原因か分かりますでしょうか?

    また、このサイトのサンプルプログラムの様に#includeの部分を、別の何かに置き換えて記述しなければならないのでしょうか?

    もし、お分かりでしたら、ご回答よろしくお願いします。

    返信削除
  36. 誠に勝手ながら解決しました。お騒がせしました。

    #include ではなく #include  であったことと、

    sin()関数で使用できる変数の型と代入が間違っていました。
    ありがとうございました。

    返信削除
  37. OpenCVとVS2013の設定に苦戦していましたが、こちらのページを参考にさせて頂いて設定を行ったところ、問題が解決しました。丁寧な説明でとてもわかりやすかったです。助かりました。ありがとうございます。

    返信削除
  38. 参考にさせていただきました。
    分かりやすく丁寧な解説のおかげで問題なく動かすことができました。
    ありがとうございます。

    返信削除
  39. opencvの導入で非常に困っています。私はopencv-2.4.11を入れたので、3の静的リンクライブラリの数字の部分はしっかりと2411に直して手順どうりにやってみました。しかし、VSでビルドして(こちらは正常修了)、その後デバッグなしで実行すると次のエラーが出ました。対処法を教えていただけるとありがたいです。
    「プログラム C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\Debug\OpenCV_Test.exe を開始できません。
    指定されたファイルが見つかりません。]

    返信削除
    返信
    1. opencvの導入は正しくできているようです。
      一度VSを再起動して、リビルドして、それでもダメなら
      http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14115408009
      この投稿が役に立つのではないかと思います。

      削除
    2. お返事ありがとうございます。提示していただいたURLにとんでいろいろ調べてみました。
      まず、私の環境ではプログラムが実行されるとOpenCV_Test.exeというexeが出てくるようでした。
      それがDebugというファイルに出力されると書いてあった(マクロで表示してありました)ので、そのファイルを
      探してみました。しかし、見つからずそもそもexeファイルが出力されていないから実行できないのではないかと
      思いました。
      exeが吐き出されない原因として何かアドバイスいただけないでしょうか。
      二、三日導入に手こずっていてギブアップ寸前です。

      削除
    3. プロジェクトのプロパティの構成プロパティの全般の設定はどうなっていますか。そこでexeを作る設定になっていない場合はexeは作られません。

      削除
    4. 確認しました。ターゲットの拡張子が.exeになっていたので、exeファイルを出力する設定になっていると思います。
      だけど、出力先マクロで指定されているフォルダを調べてもexeはなく、フォルダのどの階層を調べても見つけられない状況です。

      削除
    5. 出力ディレクトリ、中間ディレクトリ、ターゲット名、ターゲットの拡張子のそれぞれの項目は何と書かれていますか?

      削除
  40. 調べてみました。
    出力ディレクトリマクロ表示 $(SolutionDir)$(Configuration)\
    出力ディレクトリ参照表示 C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\OpenCV_Test

    中間ディレクトリマクロ表示 $(Configuration)\
    中間ディレクトリ参照表示 C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\OpenCV_Test

    ターゲット名マクロ表示 $(ProjectName) 
    ターゲット名 OpenCV_Test

    ターゲットの拡張子 .exe

    です。ご迷惑おかけします。

    返信削除
    返信
    1. 特に問題ないようですね。
      ビルドをすると以下のようにログが「出力」タブに出力されるはずですが、ちゃんと出力されていますか? 下の例は64bit Releaseの様子です

      1>------ ビルド開始: プロジェクト:OpenCV_Test, 構成:Release x64 ------
      (省略)
      1> ライブラリ C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\OpenCV_Test\OpenCV_Test.lib と
      オブジェクト C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\OpenCV_Test\OpenCV_Test.exp を作成中
      1> コード生成しています。
      1> コード生成が終了しました。
      1> OpenCV_Test.vcxproj -> C:\Users\Owner\Documents\Visual Studio 2013\Projects\OpenCV_Test\OpenCV_Test\OpenCV_Test.exe
      ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

      削除
    2. 画面の下の方の「出力」ってなってるところですよね?
      ビルドを実行すると以下の表示しか出ません。

      1>------ すべてのリビルド開始: プロジェクト:OpenCV_Test, 構成:Debug Win32 ------
      ========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

      これが問題なのでしょうか??

      削除
    3. 触っていて気付いたのですが、VSの構成マネージャーのアクティブソリューションプラットフォームはいじらなくても大丈夫ですか?
      もともとWin32になっていたので、x64にしたり、x86にしたりしてみたのですが。

      削除
    4. x64 x86は関係ないですね。ソリューションエクスプローラーに作成されたプロジェクトがあると思います。そのソースファイルというところに「main.cpp」はありますか? ここになにもない場合、出力された状態が再現します。何か有りビルドが正しくされると以下のように表示されます。
      (ファイル名は読み替えてください)

      1>------ すべてのリビルド開始: プロジェクト:Project1, 構成:Release Win32 ------
      1> Source.cpp
      1> コード生成しています。
      1> コード生成が終了しました。
      1> Project1.vcxproj -> c:\users\name\documents\visual studio 2013\Projects\Project1\Release\Project1.exe
      ========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

      削除
    5. 何度もすいません。
      c:\users\name\documents\visual studio 2013\Projects\OpenCV_Testの中にmain.cppをつくり、ビルドを行うと
      ========== すべてビルド: 1 正常終了、0 失敗、0 スキップ ========
      となり、exeが出力された旨が表示されません。
      やはり、何かしらの原因でexeが出力されていないようです。
      現在、他の方法も試しつつ何か解決案を模索中です。

      削除
    6. >OpenCV_Testの中にmain.cppをつくり
      つくるだけではそのファイルはビルドに使われません。Visual Studio内のソースファイルに追加してください。

      削除
    7. やっと実行できました!!!本当にありがとうございます。
      どうやら原因はプロジェクトを作成した後のファイルを作る手順にあったようです。
      私の場合、「新しいプロジェクト」でプロジェクトを作った後、「新しいファイル」でファイル作成をしていました。
      そのため、ソリューションエクスプローラーのソースファイルの部分に、自作のソースファイルが入ってなかったみたいです。
      ソリューションエクスプローラーのソースファイルの上でクリックして、ファイルの追加を行うと、自作のmain.cppが反映されて
      無事にコンパイル、実行できました。いろいろアドバイスいただきありがとうございました。

      削除
  41. OpenCV v2.4.9 VS2010 expressにて環境構築を行なっていた際に、
    試行錯誤があったためコメントさせていただきます。

    手順通りに設定し、ビルドを実行すると「opencv_calib3d249.lib」が見つからないとのエラーがでますが
    ライブラリディレクトリ(C:\opencv\build\x86\vc10\lib等)には、該当ファイルは無く
    「opencv_hoge2411.lib」が入っていました。

    これに対する解決策として
    >3.静的リンクライブラリの設定(リンカ用ヘッダー作成)
    でDLした「opencv_lib.hpp」内には、opencv_hoge249d.libが参照されるよう記載されていましたので、
    これを249から2411に変更すれば、無事ビルドが通りました。

    サンプルコード以外に試していませんが、参考になれば幸いです。

    返信削除
  42. VS2013 + OpenCV 2.4.10で、x64でビルドして動作しました。opencv_lib.hpp内の249を2410に置換するだけで問題ありませんでした。貴重な情報、本当にありがとうございます。

    返信削除
  43. OpenCV v2.4.9とVS2013を用いて, 上記の所定の設定を行ったのですが…
    「error LNK1104: ファイル 'opencv_calib3d249d.lib' を開くことができません。」
    と出てしまい困っています.
    ファイル名を検索すると「opencv_calib3d249d.lib」存在しているのですが…

    返信削除
  44. ビルドを行なうと,「アプリケーションを正しく起動できませんでした」とのダイアログがでます.
    出力結果を見ると
    'Win32Project3.exe' (Win32): 'C:\Windows\SysWOW64\msvcp120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。
    'Win32Project3.exe' (Win32): 'C:\Windows\SysWOW64\msvcr120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。
    プログラム '[1648] Win32Project3.exe' はコード -1073741701 (0xc000007b) で終了しました。
    となっています.

    返信削除
    返信
    1. その現象は再現したことないので何とも言えませんが、opencvを使わないソースコードでビルドできることを確認してみてください。opencvに関わるエラーでないと思われます。

      削除
  45. error LNK1104: ファイル 'kernel32.lib' を開くことができません。 と出てしまい、「親またはプロジェクトの規定値から継承」チェックを入れても動かないのですが、どうしたらよいでしょうか?

    返信削除
    返信
    1. > 5.VisualStudioの設定の「ライブラリディレクトリ」の設定で「親またはプロジェクトの規定値から継承」のチェックが外れているとその現象が起きることが有ります。
      を正しく行ったうえでまだ動かないのですね? ライブラリ ディレクトリを開いた時の継承の値には何と書かれていますか?

      私の環境(Visual Studio 2010)では、$(WindowsSdkDir)libが含まれており、
      マクロでWindowsSdkDirを検索するとC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A で、その下のlibフォルダにKernel32.Libが入っていました。

      参考にしてみてください。

      削除
    2. $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);C:\opencv\build\x86\vc12\lib;$(LibraryPath)
      以上の文がライブラリディレクトリに書かれています。
      C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0Aの下にlibフォルダが存在しないで、
      C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1Aの方にlibフォルダがあります。これの場合どうしたらいいのでしょうか?

      削除
    3. $(VC_LibraryPath_x86)
      $(WindowsSDK_LibraryPath_x86)
      すいません。継承の値は上のようになっていました。

      削除
    4. $(VC_LibraryPath_x86)
      $(WindowsSDK_LibraryPath_x86)
      この名前をマクロから探して、フォルダの中にkernel32.libがあるか確認してみてください。

      ないのなら、各種コンポーネントのインストールに失敗している可能性があります。

      削除
    5. 私のPCにはWindowsSDKというファイルが見当たらず、変わりにMicrosoft SDKsというファイルがあるのですが、これは関係ないのでしょうか?

      削除
  46. プロジェクト>「●●のプロパティ」>構成プロパティ>「リンカー」>全般>「追加のライブラリディレクトリ」にC:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;を加えて実行したところ、「error LNK1158: 'rc.exe' を実行できません。」表示されてしまいました。

    返信削除
    返信
    1. C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
      はx64用だと思われます。x86用のライブラリを追加してみてください。

      削除
    2. 丁寧な解説ありがとうございました。解決できました!

      削除
  47. 手順のとうりにできたつもりだったのですがサンプルを実行すると下のようなエラーが出てしまいます。どこを直せばいいでしょうか?
    1>d:\プロジェクト\opencv_test\main.cpp(2): fatal error C1083: include ファイルを開けません。'opencv2/opencv.hpp': No such file or directory

    返信削除
    返信
    1. > 構成プロパティ→VC++ディレクトリを選択し、インクルードディレクトリの右の▼をクリックし、編集を選択し、「C:\opencv\build\include」を追加します。
      この一文をちゃんと設定したか確認し、ここで設定したフォルダ(独自に設定したならそこ)にopencv2があり、かつその中にopencv.hppがあるか確認して下さい。Dのディスクにopencvを入れたなら、C:をD:にする必要があるとか、そういうところを。

      削除
  48. 「 >LINK : fatal error LNK1104: ファイル 'opencv_calib3d249d.lib' を開くことができません 」

    というエラーで詰まっていたのですが、解決しました。
    恥ずかしい、醜い、雑魚いミスです。

    C:\opencv\build\x86\vc10\lib に 「opencv_calib3d249d.lib」 は確かに存在します。

    なのにこのエラーが出たということはパスが間違っているのだろうと思い

    「5 Visual Studio の設定」 を見直しました。原因はここでした。

    C:\opencv\build\include 
    C:\opencv\build\x86\vc10\lib

    をともに 【インクルードディレクトリ】 に設定していました。
    記事を読み飛ばしていたためにミスをしてしまいました。

    C:\opencv\build\x86\vc10\lib

    は 【ライブラリディレクトリ】 に設定しましょう。

    これで解決しました。

    同じようなエラーを発生してらっしゃる方を見かけたので
    ここに記させていただきました。

    このようなへなちょこなミスをしてしまった方の
    参考になれば幸いです。

    長文失礼しました。

    返信削除
  49. Windows Server2012 ,VisualStudio 2013 Express for Desktop , OpenCV2.4.8 (Cmakeを使ったインストール) という環境で、32bitから64bitにプロジェクトを変更することに悩んでいましたが、お陰様で無事動かすことが出来ました。

    他のページを参考にし64ビット用のプロジェクトはできあがったのですが、32ビットライブラリを実行時にリンクしてしまいうまくいかずに悩んでいました。

    このページの 4. に書かれている64ビット用パスをPath変数の最後に追加することで旨く動くようになりました。 32bit用パスはそのまま残してあります有ります(他のプロジェクトのため)。

    有り難うございました。

    返信削除
    返信
    1. パスの問題はいつでもつきまといますね。
      動いて良かったです。

      削除
  50. opencv1.1で作成したプログラムをopencv2.4.9で動かそうとしたところ、error LNK1104: ファイル 'cv.lib' を開くことができません。
    と表示されました。これはバージョンアップしたことで表記の仕方が変更したのでしょうか?

    返信削除
    返信
    1. どこかに #pragma comment(lib,cv.lib)って書いていませんか?
      ないしはプロジェクトのリンカにcv.libと書いていませんか?
      それを消して、ここに書いている通りすれば今までどおりのコードが使えるはずです

      削除
    2. 返信ありがとうございます。
      #pragma comment(lib,"cv.lib")
      #pragma comment(lib,"cxcore.lib")
      #pragma comment(lib,"highgui.lib")
      この3つが使用しているのですが、最後のプログラムを消すとエラーが発生してしまいます。
      加え#include
      #include
      #include
      #include

      #include
      #include
      この不要なものはありますか?


      削除
    3. コメントが途切れていてすいません。
      言われた通りに実行したところ
      cxcore.libが開くことができません
      highgui.libが開くことができません
      とエラーが発生しました。
      上記のエラーは前回と同じ処理をしたところ
      LNK2019 未解決の外部シンボルのエラーが発生しました。
      これの解決策を教えてください。

      削除
    4. opencv1.1系のコードが2系で動くかをちゃんと確認せずに返信していました。私は1.1系を一度も扱ったことがないので起こりうる問題と解決を持ち合わせていません。申し訳ないです。
      ちなみに、未解決の外部シンボルのエラーは.libファイルがないためです。よくあるエラーです。

      削除
  51. 質問失礼いたします。
    https://github.com/SatoshiRobatoFujimoto/KinectFusionV2
    ↑のプログラムを動かそうとしているのですが、error C1190: マネージ ターゲット コードには '/clr' が必要です。とエラーが発生します。
    共通言語ランタイムサポートは(/clr)に設定しています。
    解決策を教えてください。

    返信削除
    返信
    1. OpenCVとは関係ないところの問題かと思われます。
      時間があるときに試すので、少々お待ちください。解決したらまた投稿いただければ幸いです。

      削除
  52. NuGetを使ってVisual Studio 2013にopencv2.4.10をインストールしたのですが、ビルドすると
    LNK1181: 入力ファイル 'opencv_core.lib' を開けません。
    と表示されました。
    packages\OpenCV.2.4.10\build\native\lib\Win32\v120\Releaseの直下にはopencv_core2410.libがありますが、
    opencv_core.libは見つかりません。opencv_core.libは一体どこにあるのでしょうか?
    「リンカー」>全般>「追加のライブラリディレクトリ」でopencv_core2410.libのあるファイルを指定してもエラーが消えません。
    どうか解決策を教えてください。

    返信削除
    返信
    1. NuGetからインストールしたのですね。
      私がインストールしたNuGet上のOpenCVだと、このブログのサンプルコードの、#include opencv2/opencv_lib.hpp の行を削除したコードを実行するだけで動きました。1から5までの手順は必要ありませんでした。
      libの名前にはバージョン名が書いてあるのが普通なので、opencv_core.libは存在しないと思います。
      一度、新しいプロジェクトを作って、1から5までの手順を飛ばして、NuGetからOpenCVをインストールして、サンプルコードを実行してみてください。

      削除
  53. こんにちは、Physics Stationの管理人です。
    このブログのメンテナンスは行われていませんので、今後ははてなブログで作っている新ブログで質問を受け付けます。
    今まで通り、可能な限り答えていきますので、新ブログもよろしくお願いします。

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。