0

在 Emgu.CV.OCR 示例项目中,有一个 class Tesseract,它是 Tesseract-OCR 引擎的包装器。在 Tesseract.cs 中,有如下声明:

[DllImport(CvInvoke.EXTERN_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)]
private static extern IntPtr TessBaseAPICreate();

CvInvoke.EXTERN_LIBRARY 指向 cvextern.dll。

我在 DependencyWalker 中打开了 cvextern.dll,发现任何地方都没有任何 Tesseract 函数,只有 OpenCV 函数。

我确定我遗漏了一些明显的东西,但是这里使用的实际函数定义在哪里?

4

1 回答 1

2

如果我在 DependencyWalker 中打开并在左侧窗格中cvextern.dll单击,我可以在列表中看到 Tesseract 函数。CVEXTERN.DLL您将不得不向下滚动该列表的大部分内容,但我可以找到:

TessBaseAPICreate
TessBaseAPIExtractResult
TessBaseAPIGetUTF8Text
TessBaseAPIInit
TessBaseAPIRecognizeImage
TessBaseAPIRelease
TessBaseAPISetVariable

为了进一步证明,我下载了 Emgu 的源代码(此处的说明),Tesseract 库包含在 \Emgu.CV.Extern\tesseract 中。

上述方法的实现在\Emgu.CV.Extern\tesseract\tesseract.cpp。本质上,他们使用EmguTesseract继承自tesseract::TessBaseAPI.

于 2012-11-21T08:00:42.860 回答