QT“图片转文字”

如果你想找的是“文字识别”,可以看看QT使用PaddleOCR文字识别是不是你想要的

环境

Windows7
Qt Creator 4.5.1 (MSVC2017_64)
Qt 5.10.1

效果图

在这里插入图片描述

源码下载

可以从github imgtotext下载代码

部分代码及原理

距离第一次看到这种“图片”怕是有年头了,最近突然想自己实现一个试试,应该说这个程序的原理和代码都不复杂,不过想要较高的运行速度或者处理视频的话可能要借助其他图形处理库并花点心思优化。
用各种语言和工具写了类似程序的人估计都不少了,毕竟网络上时有遇见,而且感觉有经验的人实现这个也就是随手的事,然而其他想知道是如何实现的人就不是很容易找到答案了,换了好几种我认为可以描述这个效果的短语,发现都有描述相近但更受关注的问题,比如搜“图片转文字”的结果基本都是“文字识别”相关的……

一句话概括原理的话,就是用文字来代替图片中的像素点,文字笔画比较稀疏的文字用来表示较浅的颜色,较密的则用来表示深色即可。

剩下的要解决的问题就是找到一种工具可以操作图片的像素并考虑如何进行具体的操作了。

QT的QImage类即可完成上述的任务。

	std::vector<QString> textPixel;
    textPixel.push_back(QString::fromLocal8Bit("一"));//8个汉字代表8种颜色
    textPixel.push_back(QString::fromLocal8Bit("乙"));//从上到下由浅入深
    textPixel.push_back(QString::fromLocal8Bit("大"));//使用更多的汉字未必能获得更好的效果
    textPixel.push_back(QString::fromLocal8Bit("丙"));//一是因为这种图能表示的像素数量本身就很有限
    textPixel.push_back(QString::fromLocal8Bit("交"));//二是汉字的疏密程度也不是很好分级,就难以对应更多的颜色
    textPixel.push_back(QString::fromLocal8Bit("羽"));
    textPixel.push_back(QString::fromLocal8Bit("拜"));
    textPixel.push_back(QString::fromLocal8Bit("慧"));//fromLocal8Bit是为了正确的显示汉字

    QString imgPath=QFileDialog::getOpenFileName(this,"Choose Image","","Image File(*.png *.jpg *.bmp)");
    if(imgPath.size()==0)
    {
        return;
    }
    ui->textBrowser->clear();
    QImage q(imgPath);
    m_label->resize(ui->widget->size());
    m_label->setPixmap(QPixmap::fromImage(q.scaled(m_label->size(),Qt::KeepAspectRatio)));
    m_label->show();

    q=q.convertToFormat(QImage::Format_Grayscale8);//将图片转换为黑白的
    q=q.scaledToWidth(pix);//调整图片大小,使水平方向的像素点为pix个
    q.invertPixels();//反置图片颜色,这步可以省略
    //如果省略,越亮的像素点颜色数值越大,后面替换成文字的时候就得绕个弯
    for(int i=0;i<q.height();++i)
    {
        for(int j=0;j<q.width();++j)
        {
        	//逐一扫描图片中的像素点,黑白图片的颜色由0-255的整形数字表示
        	//我们一共使用了8个汉字,那么就将颜色值除以32将其分成八组即可,这里可以使用哈希表优化
            ui->textBrowser->insertPlainText(textPixel[qRed(q.pixel(j,i))/32]);
        }
        ui->textBrowser->insertPlainText("\n");
    }


代码中有汉字经常带来问题……如果你编译时出现“常量中含有换行符”的错误,可以如下图设置,或者使用英文等字符替换像素。
在这里插入图片描述
这个程序没做什么优化,虽然我设置的像素区间比较大(5-1080),但当你每行使用较多像素点时(大概是200以上?毕竟O(N2)…),会非常耗时,程序会卡住很长时间,慎用。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt OCR识别图片文字是一种非常方便的技术,它能够将图片中的文字自动识别出来,并换成计算机可以理解的文本形式。这项技术可以在很多领域得到应用,比如自动化文档处理、数字化图书馆等等。Qt OCR技术的工作原理和其他OCR技术大致相同,它使用计算机视觉和图像处理的算法,将图片中的文字进行分析和提取。 Qt OCR识别技术的优点在于它能够快速、准确地识别图片文字,而且非常灵活。通过Qt OCR技术,我们可以实现图片到文本的自动换,实现高效的文本处理。 Qt OCR技术的应用非常广泛,可以用于数字化文档、电子书的制作等。同时,这项技术也可以用于图像识别领域,在智能化市场、安防领域等领域都能得到广泛应用。 ### 回答2: Qt OCR是一种能够识别图片中的文字的技术,在这个过程中,Qt OCR通过对图片进行处理,提取出其中的文本信息,然后进行文字识别,并最终将结果输出。Qt OCR可以实现对多种图像格式,如PDF、JPG、PNG等格式中的文字进行识别,可以支持多种语言文字识别,如中文、英文等。它可以应用于许多方面,如自动化文书处理、图像文字识别等领域。在使用Qt OCR进行文本识别时,需要注意选择适合自己需求的识别引擎,如基于Tesseract的引擎、Abbyy引擎等,以达到最佳的识别效果。同时还需要注意对识别的图片进行预处理,如进行灰度化、二值化等处理,以提高识别准确率。总的来说,Qt OCR是一种实用的文本识别技术,可以帮助我们更高效地处理文本信息。 ### 回答3: Qt OCR(Optical Character Recognition)是一种通过计算机软件来识别图片内容的技术。它可以将图像中的文本换为计算机可读的文字,并将其用于文本分析、编辑和搜索等方面。Qt OCR是使用Qt编写的OCR库,它具有识别精度高、速度快、易于使用等特点。 Qt OCR可以识别不同格式的图片文件,包括JPG、PNG、BMP等。它还支持多种字体、多种语言的识别,如中文、英文、日语、韩语等。用户可以根据需要进行设置和优化。 在使用Qt OCR时,用户需要首先将需要识别的图片加载进来,并设置好相关参数,如识别语言、字体大小等。然后,Qt OCR会对图片进行分析和处理,并将其中的文本内容换为计算机可读的文字。用户可以对识别结果进行编辑和处理,也可以将结果保存到文件中。 总的来说,Qt OCR是一种非常实用的技术,它可以帮助用户高效地识别图片中的文本内容,并将其换为计算机可读的格式。无论是对于个人用户还是企业机构,都可以带来极大的便利和效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值