gpt4 book ai didi

c++ - 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 错误(预期类型说明符)

转载 作者:行者123 更新时间:2023-11-28 04:31:03 26 4
gpt4 key购买 nike

我使用 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();

大写/小写错误。

关于c++ - 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 错误(预期类型说明符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52901716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com