Qt设计:提取数字提取文字

##效果
这里写图片描述

##源码

##//mymainwindow.cpp

#include "mymainwindow.h"
#include "ui_mymainwindow.h"
#include <QString>
#include <qDebug>
#include <QPalette>
myMainWindow::myMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::myMainWindow)
{
    ui->setupUi(this);
    QPalette pe;
    QFont font("Arial",16);
}

myMainWindow::~myMainWindow()
{
    delete ui;
}

void myMainWindow::on_pushButton_clicked()
{
    //获取数字
      QString str;
      QString res;
      QChar ch;
      str = ui->lineEdit->text();


      for(int i=0;i<str.size();i++)
      {
         ch = str.at(i);
          if(ch.toLatin1() <'0'||ch > '9')
              continue;
          if(((ch.toLatin1()-'0')%2)!=0||((ch.toLatin1()-'0')%2)!=1)
              res.append(ch);

          }

      QPalette pe;
      QFont font("Microsoft YaHei",16,75);

      pe.setColor(QPalette::Background,Qt::blue);
      pe.setColor(QPalette::WindowText,Qt::red);
      ui->label->setAutoFillBackground(true);
      ui->label->setPalette(pe);
      ui->label->setFont(font);
      ui->label->setText(res);
}

void myMainWindow::on_pushButton_2_clicked()
{
    //提取字符
       QString str;
       QString res;
       QChar ch;
       str = ui->lineEdit->text();

       for(int i=0;i<str.size();i++)
       {
          ch = str.at(i);
           if(ch.toLatin1() <'0'||ch > '9')
               res.append(ch);

           }

            QPalette pe;
            QFont font("Microsoft YaHei",16,75);
            pe.setColor(QPalette::WindowText,Qt::blue);
            pe.setColor(QPalette::Background,Qt::red);
            ui->label->setAutoFillBackground(true);
            ui->label->setPalette(pe);
            ui->label->setFont(font);
            ui->label->setText(res);
}

void myMainWindow::on_pushButton_3_clicked()
{
    close();
}

##//main.cpp

#include "mymainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    myMainWindow w;
    w.show();

    return a.exec();
}

##//mymainwindow.h

#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class myMainWindow;
}

class myMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit myMainWindow(QWidget *parent = 0);
    ~myMainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();


    void on_pushButton_3_clicked();

private:
    Ui::myMainWindow *ui;
};

#endif // MYMAINWINDOW_H

### 项目概述 为了实现基于 QT 和 OpenCV 的图像文字识别功能,可以结合 OCR 技术(如 Tesseract)来完成。这种技术组合为开发者提供了一个强大的平台,用于从图像中提取文字信息,无论是数字、英文字符还是汉字。QT 提供了图形界面支持,OpenCV 负责图像处理,而 OCR 库(如 Tesseract)则负责文字识别,三者结合可以实现一个功能完整的文字识别应用程序[^2]。 ### 技术实现细节 #### 环境配置 首先需要安装以下组件: - **QT 5.14** 或更高版本:用于构建图形用户界面。 - **OpenCV 4.5.5** 或更高版本:用于图像预处理。 - **Tesseract OCR**:用于实际的文字识别。 环境配置可以参考 优快云 上的一篇博客文章,其中详细描述了如何配置这些工具[^4]。 #### 图像预处理 在进行文字识别之前,通常需要对图像进行预处理以提高识别的准确性。常见的预处理步骤包括: - **灰度化**:将彩色图像转换为灰度图像。 - **二值化**:将灰度图像转换为黑白图像,便于 OCR 识别。 - **去噪**:去除图像中的噪声以提高识别准确性。 - **边缘检测**:帮助定位图像中的文字区域。 OpenCV 提供了多种图像处理函数,可以轻松完成这些任务。例如,使用 `cv::cvtColor` 进行灰度化,使用 `cv::threshold` 进行二值化: ```cpp cv::Mat gray, binary; cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY); cv::threshold(gray, binary, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); ``` #### OCR 文字识别 使用 Tesseract OCR 库可以实现文字识别。Tesseract 是一个开源的 OCR 引擎,支持多种语言,包括中文。可以通过以下步骤调用 Tesseract: 1. 初始化 Tesseract 引擎。 2. 设置图像和语言模型。 3. 执行识别并获取结果。 ```cpp tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI(); ocr->Init(NULL, "chi_sim"); // 使用简体中文模型 ocr->SetImage(binary.data, binary.cols, binary.rows, 1, binary.step); char *text = ocr->GetUTF8Text(); std::cout << text; ``` #### QT 界面集成 QT 提供了丰富的 UI 组件,可以方便地将图像处理和 OCR 功能集成到一个图形界面中。可以通过 QT Designer 创建 UI 布局,然后在代码中连接信号和槽函数来实现功能交互。 ### 项目特点 - **跨平台支持**:QT 和 OpenCV 都支持多平台,因此该应用程序可以在 Windows、Linux 和 macOS 上运行。 - **扩展性强**:项目结构清晰,便于后续添加更多功能,如支持更多语言、提高识别精度等。 - **学习和交流平台**:该项目不仅适合初学者学习 OCR 技术,也为有经验的开发者提供了一个研究和扩展的平台[^2]。 ### 项目地址 如果需要参考完整的项目代码,可以访问 [GitCode](https://gitcode.com/open-source-toolkit/da33d) 获取示例程序[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值