質問: NULL) return -1; imwrite("image/face1-1.jpeg", img); return 0; } ``` いくつかのサイトを参考にし、 ・プログラム中の日本語コメントがCP932と認識されている原因の可能性があるため、削除する。 ・ビルドする際にDebugからReleaseに変更する。 というような対処をしましたが、うまくいきませんでした。(エラーの数は減ったのですが...) その他のサイトを見ると、LNK(リンカエラー)は対応するライブラリが追加されていないことを示している。 と書かれてありましたが、ライブラリにはスタティックライブラリ、ダイナミックライブラリ、.NETのクラスライブラリの3種類があり、一般的なのがダイナミックライブラリでそれには、 1. ダイナミックリンクライブラリファイル(*.dll) 2. ライブラリファイル(*.lib) 1. ヘッダファイル(インクルードファイル)(*.h) があることが書かれてありました。(参考url: http://imagingsolution.blog107.fc2.com/blog-entry-231.html) そのため、インクルードするヘッダーファイルに問題があるのでしょうか? このエラーや警告の解消を試みている数時間前は「imread,imwriteの識別子が見つかりません。」 というエラーも表示されていました。 もしかしたらimread,imwrite関数を使えるようにするためのヘッダーファイルをインクルードしていない、もしくはヘッダーファイルをビルドしようとしているソースファイルのフォルダ内に入っていない。 という問題があるのかなと考えています。 しかし、どのようなヘッダーファイルを入れればいいのか、どのようにパス指定をすればいいのかわからないため、わかっていただける方にご教授願いたいと思います。 よろしくお願いします。 --- 統合開発環境:Visual Studio Professional 2013 言語:C++ OS:Windows 画像認識のライブラリ:OpenCV(ver3.1.0) 自動化ツール:CMake ---
回答: > > error LNK2001: 外部シンボル ""class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z)" は未解決です。 > > > http://harapeko-kid.hungry.jp/opencv3-1-install 上のページの通りにやったのであれば、リンクしたライブラリファイルが opencv_core310(d).lib と opencv_highgui310(d).lib の2つしか入れていないはずです。 imread, imwrite にはそれでは不足です。おそらく opencv_imgcodecs310(d).lib が必要です。 まだ足りなければ、lib フォルダに有る opencv_*.lib ファイルを全部入れてください(ただし Debug と Release を間違えないように注意) なお、Visual Studio 2013 であれば、公式から配布されているプリビルド版が使えるので、わざわざ自分でビルドしなくても、 既に他の方が回答されているように opencv_world***.lib の一つだけで十分なはずです。 ちなみに老婆心ながら、C/C++ の基礎知識である、「リンクとは何か」も理解されていない(エラーメッセージの意味がわからない、ヘッダファイルとライブラリファイルの区別もついていない)ようですので、まずはそちらを先に勉強されることをおすすめします。でなければ、何度でも同じようなところでつまずくでしょう。 OpenCV は最初に学習されるライブラリとしては、少し複雑すぎると思います。