ZBLOG

C++ opencv 识别192*112图片中的文字,并将识别的文字重新生成一张1920*1080的图片

要使用 C++ 和 OpenCV 识别图片中的文字并将其生成一张新的图片,你可以遵循以下步骤:

  1. 安装 OpenCV:确保你的开发环境中已经安装了 OpenCV 库。你还需要 Tesseract OCR(一个开源的光学字符识别引擎)来进行文字识别。

  2. 代码示例:下面是一个简单的示例代码,它展示了如何读取192x112的图像,使用 Tesseract 进行文字识别,然后在一张1920x1080的空白图像上绘制识别到的文字。

#include <opencv2/opencv.hpp>
#include <tesseract/baseapi.h>
#include <tesseract/errcode.h>
#include <iostream>

int main() {
    // 加载192x112图像
    cv::Mat img = cv::imread("input_image.png");
    if (img.empty()) {
        std::cerr << "Could not open or find the image!" << std::endl;
        return -1;
    }

    // 创建Tesseract对象
    tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
    
    // 初始化Tesseract
    if (ocr->Init(NULL, "eng")) { // 使用默认数据路径和英文语言
        std::cerr << "Could not initialize tesseract." << std::endl;
        return -1;
    }

    // 设置输入图像
    ocr->SetImage(img.data, img.cols, img.rows, 1, img.step);
    
    // 获取识别结果
    char* outText = ocr->GetUTF8Text();
    
    // 打印识别的文本
    std::cout << "Recognized Text: " << outText << std::endl;

    // 创建一张1920x1080的空白图像
    cv::Mat outputImg = cv::Mat::zeros(1080, 1920, CV_8UC3);

    // 将识别的文本写入新图像上,设置起始位置和字体大小等属性
    int fontFace = cv::FONT_HERSHEY_SIMPLEX;
    double fontScale = 1.5;
    int thickness = 2;

  	cv::putText(outputImg, outText, cv::Point(50, 100), fontFace, fontScale,
                cv::Scalar(255, 255, 255), thickness);

  	// 保存输出图像 
  	cv::imwrite("output_image.png", outputImg);

  	// 清理资源 
  	delete[] outText; 
  	ocr->End();

  	return 0; 
}
  1. 编译与运行

    • 确保你链接了 OpenCV 和 Tesseract 的库。
    • 编译程序并运行,你应该能看到从输入图片中提取出的文字,并在输出图片中显示。
  2. 注意事项

    • 确保 Tesseract 已正确安装,并且你的代码能够找到所需的数据文件。
    • 根据实际情况调整字体、大小及颜色等参数,以确保输出图片符合你的需求。

以上是一个基本的方法,根据具体要求可能还需要做其他调整。如果有任何问题,请随时问我!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21558

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?