Qt开源项目:校医院远程诊断系统介绍

news/2024/7/10 20:24:23 标签: qt, 开源, opencv

本人研一参考技术书籍开发的一款Qt程序,两年前已上传到GitHub,有兴趣的同学可以去看看。可能之前上传的项目不够完整,导致有一些同学没有在自己的环境上跑通,所以今天将整个工程都重新上传一遍,包括使用到的opencv的动态链接库。
GitHub地址:

https://github.com/luolaihua/TeleMedicine

文章目录

  • 1,使用教程
  • 2 TeleMedicine
    • 校医院远程诊断系统
  • 技术一:OpenCV
    • 病灶检测功能
    • 细胞计数功能
    • CT相片处理
  • 技术二:MySQL数据库
    • Mysql安装流程:
    • 在Qt中使用mysql数据库:
  • 技术三:Qt

1,使用教程

  • 本项目为Qt project, 所以推荐使用Qt Creator工具进行构建,关于Qt 项目的使用,本文不再赘述,请参考其他教程。

  • 为了使读者更好的在自己的环境上跑通本项目,这里提供我的Qt以及Qt Creator 版本:

  • 请添加图片描述
    请添加图片描述

  • 如果出现找不到libopencv_XXX450.dll的错误,本项目所有依赖的dll都放在TeleMedicine/debug/目录下,需要将所有dll拷贝到exe文件所在目录:

请添加图片描述
拷贝到编译生成的exe所在的工程目录即可:
请添加图片描述

2 TeleMedicine

校医院远程诊断系统

医生可使用该软件查看患者的电子档案,通过查看CT相片和化验单等数据,为患者写诊断结果, 同时CT相片经过特定的图像处理算法处理后可以更加凸显病灶,提高医生的诊断效率。

  • 使用Qt搭建用户界面,操作数据库以及处理CT相片等图像数据。
  • 通过Qt的Model/View架构完成表单与数据库的联动。
  • 使用MySQL数据库存储患者的病历档案等信息。
  • 使用OpenCV 的图像处理算法完成病灶检测和细胞计数等功能,对CT照片有很好的处理效果。

技术一:OpenCV

病灶检测功能

检测CT相片中的异物,比如肿瘤,将圈出标记。

使用到的技术:opencv中的霍夫圆检测算法

检测流程:

① 读取图像

② 灰度化

③ 高斯滤波,除噪,平滑处理

④ 设置霍夫圆检测算法的参数

⑤ 调用HoughCircles进行圆检测

⑥ 将检测到的圆在原图中标记显示

细胞计数功能

① 读取细胞图片

② 二值化

③ 中值滤波,除噪

④ Canny边缘检测

⑤ 漫水填充算法,颜色填充

⑥ 腐蚀膨胀,进一步除噪

⑦ 使用findContours函数找寻轮廓

⑧ 轮廓数就是细胞个数

⑨ minEnclosingCircle函数寻找包裹轮廓的最小圆

⑩ 将圆在原图中画出显示

细胞计数和病灶检测功能的检测效果依赖于参数的设置,因此设置了参数调节窗口。

CT相片处理

对比度和亮度(convertTo函数)

旋转缩放(放射变化,先生成仿射变换矩阵(getRotationMatrix2D),再对图像进行仿射变换(warpAffine))

滤波除噪(高斯滤波,双边滤波,中值滤波,均值滤波,方框滤波)

阈值处理(threshold函数)

技术二:MySQL数据库

在 5.12 及之前的版本中,Qt 的安装包中自带 MySql 驱动,在 plugins/sqldrivers 目录下可以找到,但到了 5.13 之后,MySql 驱动便没有了,这时我们可以选择手动编译。
下载5.13的源码,手动编译生成dll动态链接库文件,将该文件放入Qt5.13的数据库驱动文件夹中。

Mysql安装流程:

① 下载压缩包,zip文件

② 解压之后设置环境变量,将bin文件夹的路径放入

③ 在安装目录中新建一个ini文件,配置端口(3306)、连接数等等

④ 在bin目录下以管理员的身份打开控制窗口,cmd。输入:mysqld --initialize --console, 初始化,初始化之后,会显示本地主机localhost,管理员root,初始化的随机密码。

⑤ 启动服务:net start mysql

⑥ 登录数据库:mysql -u root -p,输入初始化的密码,

⑦ 修改密码语句:ALTER USER root@localhost INDENTIFIED BY ’123456’

⑧ 删除数据库:musqld --remove mysql

在Qt中使用mysql数据库:

使用QSQLDatabase的方法addDataBase(“QMYSQL”)添加一个mysql数据库,设置主机名,管理员和密码,数据库名称之后,打开数据库

使用QSqlQuery类(exec,prepare,addBindValue)对数据库增删改查,在exec函数中输入sql语句字符串即可操作数据库。

读入图片:使用QFile类将图片读入,保存为QByteArray字节数组,然后将照片数据封装成QVariant变量,在字符串语句中以问号代替数据,然后使用prepare和addBindValue函数,最后执行插入语句exec

使用QSQLTableModel类和QTableView类,模型视图架构。Model加载数据库中的表格或视图(setTable),然后QTableView设置模型(setModel),即可实现表单与数据库的联动

技术三:Qt

设置快捷键:setShortcut,为动作设置快捷键,可以代码添加,也可以在ui文件中添加

事件过滤器:图片双击事件

使用QTreeWidget来显示地区、科室

使用QTabWidget来显示用户信息和病历

使用QTableView来显示病人的表格
在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述


http://www.niftyadmin.cn/n/249899.html

相关文章

中级软件设计师备考---数据库系统1

目录 数据库模式数据库的设计过程E-R模型关系代数与元组演算 数据库模式 三级模式、两级映射 定义: 三级模式:外模式、概念模式和内模式;两级映射:外模式-概念模式映射、概念模式-内模式映射 外模式是用户看到的数据库的部分 概…

小程序模板语法

目录 1.1双向绑定 1.2 列表渲染 1.3 条件渲染 生命周期 2.1 应用级别的生命周期 2.2 页面级别的生命周期 内置 API 3.1 网络请求 3.2 界面交互 3.3 本地存储 npm 支持 4.1 默认构建 4.2 自定义构建 修改小程序的根目录 手动 npm 构建小程序 在小程序中使用 van…

Protocol Buffers Go Generated Code Guide

Protocol Buffers Go 代码生成指南 本主题准确描述了协议缓冲区编译器为任何给定的协议定义生成的Go代码。 编译器调用 协议缓冲区编译器需要一个插件来生成Go 代码。使用Go 1.16或更高版本安装,方法是运行: go install google.golang.org/protobuf/…

大数据数仓维度建模

目录 维度建模分为三种: 1、星型模型: 2、雪花模型: 3、星座模型: 模型的选择: 维度表和事实表: 维度表: 维度表特性 : 事实表: 事实表特性: 事务型…

银行数字化转型导师坚鹏:商业银行数字化风控(2天)

商业银行数字化风控 课程背景: 数字化背景下,很多银行存在以下问题: 不清楚商业银行数字化风控发展现状? 不清楚对公业务数字化风控工作如何开展? 不知道零售业务数字化风控工作如何开展? 课程特色…

Linux 内核设备树(DTS)简述

Linux 内核 设备树(DTS)简述 Linux设备树(Device Tree)是一种描述硬件设备的数据结构,它将硬件设备的信息以树形结构的方式组织起来,方便内核和驱动程序的访问和管理。在Linux系统中,设备树通常被用于描述嵌入式系统中…

基于JAVA CS远程监控系统软件的实现

基于JAVA C/S远程监控系统软件的实现 摘 要 近年来,网络技术的不断发展,为远程监控技术的发展创造了条件。远程监控系统软件越来越受到人们的重视,其实用性也毋庸质疑。基于JAVA C/S远程监控系统软件突破了空间的限制,使用者不用亲临,在自己的电脑面前就能轻松的实现对被…

python常见问题总结

对于长期深耕在python爬虫的程序员来说,如何快速解决代码中的问题它是作为合格的程序员应该具备的基本素质。下面将我总结整理出有关python的一些常见问题记录下来方便后期查证。 Python python 没有多态,而是鸭子类型 多继承,没有接口&…