#include #include #include #include #include using namespace std; using namespace cv; int main(int argc, char * argv[]) { // [1] tesseract::TessBaseAPI *myOCR = new tesseract::TessBaseAPI(); // [2] printf("Tesseract-ocr version: %s\n", myOCR->Version()); printf("Leptonica version: %s\n", getLeptonicaVersion()); // [3] if (myOCR->Init(NULL, "eng")) { fprintf(stderr, "Could not initialize tesseract.\n"); exit(1); } std::string filename = argv[1]; Mat frame = cv::imread(filename); Mat edges; //创建窗口 cv::namedWindow("bilibili_2015_top100", 1); //显示视屏 double thres = 50; double color = 255; frame = frame.rowRange(980, 1040).colRange(75, 410); // frame = frame.rowRange(940, 995).colRange(1620, 1860); cvtColor(frame, edges, cv::COLOR_BGR2GRAY); // GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); // Canny(edges, edges, 0, 30, 3); // cv::bitwise_or(edges, edges); cv::threshold(edges, edges, thres, color, CV_THRESH_BINARY); imshow("edges", edges); // myOCR->SetRectangle(0,0,pFrame->width,pFrame->height); cout << "width: " << edges.size().width << ", height: " << edges.size().height << ",channels: " << edges.channels() << ", step1: " << edges.step1() << endl; myOCR->SetImage(edges.data, edges.size().width, edges.size().height, edges.channels(), edges.step1()); myOCR->Recognize(NULL); const char* out = myOCR->GetUTF8Text(); // std::string s(out); cout << out << std::endl; if(waitKey(6000) >= 0) return 0; return 0; }