与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
Error with Tesseract-OCR relating tesseract::TessBaseApi() (expected type-specifier)
我用 openCV 2.4.9 和 tesseract 3.04 做了一个程序,两者都使用 C API。
由于 openCV 的 C API 已被弃用,我决定对其进行修改以使用两个库的 C++ API。
这部分代码在C(工作(:
#include <cv.h>
#include <tesseract/capi.h>
void foo (struct _IplImage *imgptr)
{
struct TessBaseAPI *handle_ocr;
handle_ocr = TessBaseAPICreate();
// Do something
}
在C++中应该等效于此代码(不编译(:
#include <opencv2/opencv.hpp>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
void foo (class cv::Mat *imgptr)
{
class tesseract::TessBaseAPI *handle_ocr;
handle_ocr = new tesseract::TessBaseApi();
// Do something
}
G++ 6(在 Debian Stretch 上(给出以下错误:
error: expected type-specifier
handle_ocr = new tesseract::TessBaseApi();
^~~~~~~~~
什么意思?解决方案是什么?
编辑:整个源文件:
/******************************************************************************
******* headers **************************************************************
******************************************************************************/
/* Standard C ----------------------------------------------------------------*/
/* snprintf() */
#include <cstdio>
/* Packages ------------------------------------------------------------------*/
/* opencv */
#include <opencv2/opencv.hpp>
/* OCR Tesseract */
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
/* Module --------------------------------------------------------------------*/
/* img_ocr_text & OCR_TEXT_MAX */
#include "some_other_file.hpp"
#include "this_file.hpp"
/******************************************************************************
******* func *****************************************************************
******************************************************************************/
void foo (class cv::Mat *imgptr)
{
class tesseract::TessBaseAPI *handle_ocr;
/* Language */
char *lang_str = "eng";
/* Config file */
char *conf_str = "/home/user/ocr/price";
/* init OCR */
handle_ocr = new tesseract::TessBaseApi();
handle_ocr->Init(NULL, lang_str, tesseract::OEM_TESSERACT_CUBE_COMBINED);
if (conf) {
/* Configure OCR (whitelist chars) */
handle_ocr->ReadConfigFile(conf_str);
}
/* scan image for text */
handle_ocr->SetImage(imgptr->data,
imgptr->size().width, imgptr->size().height,
imgptr->channels(), imgptr->step1());
char *txt;
txt = handle_ocr->GetUTF8Text();
/* Copy text to global variable */
snprintf(img_ocr_text, OCR_TEXT_MAX, "%s", txt);
/* cleanup */
delete [] txt;
handle_ocr->Clear();
handle_ocr->End();
}
/******************************************************************************
******* end of file **********************************************************
******************************************************************************/
替换这个:
handle_ocr = new tesseract::TessBaseApi();
有了这个:
handle_ocr = new tesseract::TessBaseAPI();
这是大写/小写的错误。
相关文章:
- 缺少类型说明符,显式类型为"缺少错误"
- 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
- 为什么转换函数声明不需要至少一个定义类型说明符
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- 函数模板签名中忽略的成员类型def 的访问说明符
- printf 数据类型说明符复杂问题
- C++错误:"class name"之前的预期类型说明符
- 缺少类型说明符和另一个问题
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 在C++中出现错误之前,无效使用了不完整的类型和所需的类型说明符
- 如何从指针类型和指针到指针类型中删除__unaligned说明符
- 缺少类型说明符 - int 假定 声明静态成员后出错
- 不能在类型说明符中定义联合
- 没有带有字符串数组的存储类或类型说明符
- 警告:函数使用不带尾随返回类型的'auto'类型说明符
- C++:在嵌套名称说明符中命名的不完整类型
- 仅为某些模板专用化定义转换运算符:预期类型/预期类型说明符
- 创建模板函数的每个实例时,模板函数类型定义说明符是否会正确内联?
- C++17异常说明符类型系统将如何工作