前提・実現したいこと
Tesseract OCRをインストールして、OpenCVでサンプルコードを動かしたいです。
環境
・Windows 10 64bit
・Visual Studio 2017
・Tesseract 4.1.0
・OpenCV 4.0.1
・OpenCV_contrib 4.0.1
・CMake 3.14.0-rc3
・vcpkg
Visual StudioとOpenCVをインストールして、
OpenCVの動作確認はできています。
また、コマンドプロンプトを使い、vcpkgでTesseractをインストールし、
CMakeでOpenCV_contribを"Configure"し、
Tesseractも"Configure"した後、"Gnerate"しました。
OpenCV.slnをVS2017で開き、x64のreleaseで、
バッチビルドにより、INSTALLとALL_BUILDのビルドに成功しています。
この方法は、以下のサイトを参考にしています。
https://qiita.com/lilac0011/items/9fe6e061c3a036689a36
発生している問題・エラーメッセージ
問題はここからです。
無事ビルドが完了し、下記のサンプルコードをデバッグしたところ、
以下2つのエラーが発生してサンプルコードが動きません。
プロジェクトのプロパティは以下の通り設定しました。
■ 追加のインクルードディレクトリ
C:\opencv\vcpkg-master\installed\x64-windows\include;
C:\opencv\build\include;%(AdditionalIncludeDirectories)
■ 追加のライブラリディレクトリ
C:\opencv\build\x64\vc15\lib;%(AdditionalLibraryDirectories)
■ 追加の依存ファイル
opencv_world401d.lib;%(AdditionalDependencies)
(その他インストール直後の初期ファイル)
ググっても情報が少ないため自己解決できません。
Tesseractの導入に詳しい方、ご教授お願いします。
LNK2019 未解決の外部シンボル "public: static struct cv::Ptr<class cv::text::OCRTesseract> __cdecl cv::text::OCRTesseract::create(char const *,char const *,char const *,int,int)" (?create@OCRTesseract@text@cv@@SA?AU?$Ptr@VOCRTesseract@text@cv@@@3@PEBD00HH@Z) が関数 main で参照されました。 TesseractTest C:\Users\Taro\source\repos\TesseractTest\TesseractTest\TesseractTest.obj LNK1120 1件の未解決の外部参照 TesseractTest C:\Users\Taro\source\repos\TesseractTest\x64\Debug\TesseractTest.exe
該当のソースコード
C++
1ソースコード 2 3#include <opencv2/opencv.hpp> 4#include <opencv2/text.hpp> 5 6using namespace cv; 7using namespace cv::dnn; 8using namespace std; 9 10void main() 11{ 12 // 画像読み込み 13 auto image = cv::imread("moji.jpg"); 14 // グレースケール化 15 cv::Mat gray; 16 cv::cvtColor(image, gray, COLOR_RGB2GRAY); 17 // 文字認識クラスのインスタンス生成 18 auto ocr = cv::text::OCRTesseract::create("C:\opencv\tesseract\tessdata", "jpn"); 19 20 std::string text; 21 std::vector<cv::Rect> boxes; 22 std::vector<std::string> words; 23 vector<float> confidences; 24 // 文字認識の実行 25 ocr->run(gray, text, &boxes, &words, &confidences); 26 27 // 結果出力 28 printf("%s\n", text.c_str()); 29 // 文字のかたまりごとに出力 30 printf(" 文字 | 位置 | 大きさ | 信頼度\n"); 31 printf("-----------+------------+------------+----------\n"); 32 for (int i = 0; i < boxes.size(); i++) 33 { 34 printf("%-10s | (%3d, %3d) | (%3d, %3d) | %f\n", 35 words[i].c_str(), 36 boxes[i].x, boxes[i].y, 37 boxes[i].width, boxes[i].height, 38 confidences[i]); 39 } 40}