IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 手把手教你开发图片识别(QT篇) -> 正文阅读

[系统运维]手把手教你开发图片识别(QT篇)

tesseract是一个开源的OCR库在linux系统中我们可以很方便的开发一个简单的图片识别工具。
开发环境:QT 5.11.3
操作系统:UOS 64位(debian) 支持国产操作系统!

安装开发环境

sudo apt-get install tesseract-ocr 			# tesseract
sudo apt-get install libtesseract-dev 		# 安装开发包
sudo apt-get install tesseract-ocr-eng 		# 安装英语
sudo apt-get install tesseract-ocr-chi-sim  # 安装中文语言包

dpkg -L tesseract-ocr-eng					# 查看语言包的安装目录,开发的时候需要配置
dpkg -L tesseract-ocr-chi-sim				# 查看语言包的安装目录,开发的时候需要配置

在这里插入图片描述
获取语言包的路径

/usr/share/tesseract-ocr/4.00/tessdata/

开发

1. 新建工程

新建QT工程。
在这里插入图片描述

我的项目中一般不使用界面文件,因此去掉勾选。
在这里插入图片描述

2. 开发配置

  1. 在pro文件中添加动态库。
    LIBS +=  -llept
    LIBS += -ltesseract
    
  2. 配置语言包路径
    有在识别文字的时候需要使用到语言包因此需要配置语言包的环境变量。
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata/
export LC_ALL=C

在这里插入图片描述

3. 界面开发

布局结果大致如下:
在这里插入图片描述

以下代码仅是布局代码。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


class QWidget;
class QVBoxLayout;
class QHBoxLayout;
class QLineEdit;
class QPushButton;
class QTextEdit;
class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    QWidget *m_Widgetmain;
    QHBoxLayout *m_layoutFileSelect;
    QVBoxLayout *m_layoutMain;
    QLineEdit *m_lineEditPath;      // 显示图片路径
    QPushButton *m_btnSelectFile;   // 文件选择按钮
    QTextEdit *m_textEditRes;       // 结果展示
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
public slots:
    // 控件按钮选择文件的事件处理
    void slotSelectFile();
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QTextEdit>
#include <QPushButton>
#include <QFileDialog>
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),
      m_Widgetmain(new QWidget),
      m_layoutFileSelect(new QHBoxLayout()),
      m_layoutMain(new QVBoxLayout()),
      m_lineEditPath(new QLineEdit),
      m_btnSelectFile(new QPushButton),
      m_btnOrc(new QPushButton),
      m_textEditRes(new QTextEdit)
{
    m_btnSelectFile->setText("选择文件");
    m_btnOrc->setText("识别");
    m_layoutFileSelect->addWidget(m_lineEditPath);
    m_layoutFileSelect->addWidget(m_btnSelectFile);
    m_layoutFileSelect->addWidget(m_btnOrc);
    m_layoutMain->addLayout(m_layoutFileSelect);
    m_layoutMain->addWidget(m_textEditRes);
    m_Widgetmain->setLayout(m_layoutMain);

    // 设置按钮监听事件
    connect(m_btnSelectFile,&QPushButton::clicked,this,&MainWindow::slotSelectFile);
    connect(m_btnOrc,&QPushButton::clicked,this,&MainWindow::slotGetORCRes);
    setCentralWidget(m_Widgetmain);
    resize(800,600);
}

MainWindow::~MainWindow()
{

}

void MainWindow::slotSelectFile()
{
    QFileDialog fileDlg;
    QString file_name = QFileDialog::getOpenFileName(NULL,"标题",".","*.*");
    m_lineEditPath->setText(file_name);
}

void MainWindow::slotGetORCRes()
{
   	// todo
}

4. 功能开发

void MainWindow::slotGetORCRes()
{
    char *outText;

   tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
   // Initialize tesseract-ocr with English, without specifying tessdata path
   if (api->Init(NULL, "chi_sim")) {
       fprintf(stderr, "Could not initialize tesseract.\n");
       exit(1);
   }

   // Open input image with leptonica library
   QString strPath = m_lineEditPath->text(); // 获取图片路径
   Pix *image = pixRead(strPath.toUtf8());
   api->SetImage(image);
   // Get OCR result
   outText = api->GetUTF8Text();
   qInfo()<<outText;
   printf("OCR output:\n%s", outText);
   // 显示结果
   m_textEditRes->setText(outText);
   // Destroy used object and release memory
   api->End();
   delete api;
   delete [] outText;
   pixDestroy(&image);
}

5.效果

测试图片
在这里插入图片描述
结果运行:

系统架构设计师历年真题

2020年系统架构设计师真题( 综合题 ) 上午
2019年系统架构设计师真题 ( 综合题 ) 上午
2019年系统架构设计师真题〈 案例分析 ) 下午
2018年系统架构设计师真题( 综合题 ) 上午
2015年系统架构设计师真题( 综合题 ) 上午
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:32:08  更:2021-11-18 11:32:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:34:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码