欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用C++结合OpenCV和Tesseract进行图像文字识别

最编程 2024-08-04 17:26:17
...
#define _CRT_SECURE_NO_DEPRECATE #include "main.h" #include <stdio.h> #include <iostream> #include <opencv2/opencv.hpp> #include <leptonica/allheaders.h> #include <tesseract/baseapi.h> #include <tesseract/publictypes.h> #include <opencv2/imgproc.hpp> using namespace cv; int main() { std::string image_name = "3.jpg"; Mat imageMat; imageMat = imread(image_name); if (imageMat.data == nullptr) { printf("No image data \n"); return -1; } Mat blurMat; // 图像模糊 // cv::medianBlur(imageMat, blurMat, 5); // 灰度图 Mat z1, z2; cv::cvtColor(imageMat, z1, cv::COLOR_BGR2GRAY); // 阈值 // cv::threshold(z1, z2, 214, 255, cv::THRESH_BINARY); // 自动降噪 cv::adaptiveThreshold(z1, g_grayImage, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 7, 25); // 显示图片 namedWindow("Image1", WINDOW_AUTOSIZE); imshow("Image1", g_grayImage); //waitKey(0); //控制台中文异常 std::system("chcp 65001"); char *outText; tesseract::TessBaseAPI api; // Initialize tesseract-ocr with English, without specifying tessdata path if (api.Init(NULL, "chi_sim")) { std::cout << stderr << std::endl; exit(1); } // 读取图片路径 // Pix *image = pixRead("3.jpg"); api.SetImage((uchar *)g_grayImage.data, g_grayImage.cols, g_grayImage.rows, 1, g_grayImage.cols); // Get OCR result outText = api.GetUTF8Text(); if (outText == nullptr) { std::cout << "没有数据" << std::endl; } // printf("OCR output:\n%s", outText); std::cout << outText << std::endl; // Destroy used object and release memory api.End(); // delete api; delete[] outText; // pixDestroy(&image); return 0; }