# **app_imgprocess**
基于C++的QT应用程序,实现图像的简单处理
---
---
# Thanks for all Reference
### ROI绘制
1. [ImageProcessing](https://github.com/HuangBingjian/ImageProcessing)
2. [继承自QLabel](https://blog.csdn.net/qq_36131739/article/details/104855098)
3. [继承自QWidget](https://blog.csdn.net/qq_40732350/article/details/103538593)
4. [解决ROI无法拖动问题](https://blog.csdn.net/it_xiangqiang/article/details/111059682)
---
---
# 注释
## **原理阐述**
1. 图像的显示是采用经典的QGraphics相关类,而参考程序大都采用QLabel进行图像显示;
2. 其中对QGraphicsView和QGraphicsItem进行继承,并对相关鼠标和键盘事件进行重写,进而实现图像的翻转,放大,自适应等操作;
3. 在类的继承过程中,相关虚函数必须被重写,例如QGraphicsItem中的boundingRect和paint函数,前者定义了当前Item的范围,在该范围内可以对鼠标的相关动作进行检测;后者函数是Item绘制函数;
4. 所以通过继承Item的方法,可以实现各种形状的绘制,当然基本形状可以利用QT中存在的相关方法实现;
5. 子类对父类的public和protect以及private成员都会继承,但是只能对前两者进行直接操作,私有的只能通过父类的函数进行访问和操作;
6. ImageProcessing-master参考项目中是在界面中添加一个QLabel作为图像界面,然后向其中加载图像,绘制各种形状的图形;
## **计划表**
1. ROI绘制还是采用继承Item的方法;将目前的Item显示图像的方法修改为利用View进行显示;
2. 对QGraphic进行继承并新建名称空间;
3. 框架中似乎忽略了对QGraphicsScene类的相关操作,只有对view和item的相关继承类ImageEditor和CODShape;猜测scene应该是作为ImageEditor的私有变量,当ImageEditor类被实例化后,Scene也会被自动实例化;
4. 尽量将Graphics模块独立出去,不要与主界面发生耦合,如果想在界面中显示相关数据,例如鼠标所在的位置和像素值,可以在视觉界面中添加控件的方式;
5. 在界面的右方添加一个QFrame(继承自QWidget),然后利用addWidget在其中放置View控件;
6. 图像显示的Item作为特殊项,不添加到iShapeList中,放大旋转移动鼠标的操作是View的事件进行响应;而对单个编辑框的操作是对IShape的事件响应;添加一个编辑框就实例化一个IShape;
7. 现在先实现对图像的放大,后续实现图像+编辑框的整体IScene的放大操作;
8. 截至目前,已完成矩形和圆形的ROI绘制移动尺寸改变等操作,ROI选区工具暂时先做这两个,后续开始完善绘图功能;
9. 绘图功能有两种方法,一是直接addFeature,即添加指定尺寸的形状;二是添加鼠标事件即可以绘制不同尺寸的形状;框架中是第一种,ImageProcessing-master参考项目中是第二种;其实两种方法都不难实现,尤其是第二种,综合考虑还是使用第一种,因为自己的软件定位是图像处理,而不是绘图软件;
10. 上述功能基本已经完善,下面开始着手软件算法的添加,首先是利用OpenCV4.0算法库,后续算法自己实现;
11. 参考别人的软件,包括ImageProcessing和Halcon;建议将相关简单函数按照类型封转到类中,然后封装到Algorithm名称空间中;对于像阈值分割,圆拟合和模板匹配等以助手的方式实现,并放到modules名称空间中。而助手的实现则是调用Algorithm名称空间中各个基础函数;
12. 简单函数包括(实际上这些处理都是OpenCV中最基础的函数,这样分开是便于后续自己代码实现这些算法,另外建议函数的接口参数尽量写得丰富一点):
- 几何变换:图像剪切,缩放和旋转;
- 灰度变换:二值化,灰度化,阈值化,线性变换,伽马变换,直方图均衡化等;
- 图像增强:平滑和锐化,以及各种滤波等;
- 形态学处理:腐蚀,膨胀,开闭运算等;
13. 上述函数利用OpenCV的库基本已经完成;并计划继续添加阈值分割助手,模板匹配助手和尺寸测量助手;
- 最简单的阈值分割助手已经完成;
- 模板匹配,较复杂,而且OpenCV中的方法并不有效,所以后续自己尝试实现;
- 尺寸测量参考网上教程是先边缘检测,然后找轮廓,最后测量物体尺寸;该方案对图像质量要求较高;另外我计划的尺寸测量是类似于measure_pos算子的原理;
14. 接下来先实现边缘检测找轮廓的尺寸测量方法,再尝试定义错误类;然后开始自己实现相关算法;
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++的QT应用程序,实现图像的简单处理.zip
共112个文件
png:55个
h:22个
cpp:21个
需积分: 0 1 下载量 60 浏览量
2023-12-31
00:35:27
上传
评论
收藏 601KB ZIP 举报
温馨提示
QT,C++使用技巧,详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。实战应用参考资料,源码参考。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其高级特性。
资源推荐
资源详情
资源评论
收起资源包目录
基于C++的QT应用程序,实现图像的简单处理.zip (112个子文件)
mainwindow.cpp 17KB
cishape.cpp 15KB
cirectshape.cpp 12KB
cicircleshape.cpp 9KB
cimageeditor.cpp 7KB
cmeasurement.cpp 5KB
cmorp.cpp 5KB
csegment.cpp 3KB
qimggraphicsitem.cpp 3KB
cenhance.cpp 3KB
cgray.cpp 2KB
ciimageshape.cpp 2KB
ialgorithm.cpp 2KB
cgemo.cpp 2KB
cifeature.cpp 1KB
ciscene.cpp 590B
qimggraphicsview.cpp 473B
cerror.cpp 303B
cmatching.cpp 231B
main.cpp 172B
cbasefunctions.cpp 129B
.gitignore 896B
cimageeditor.h 5KB
mainwindow.h 3KB
cmorp.h 3KB
cishape.h 2KB
cirectshape.h 2KB
cgray.h 2KB
cgemo.h 2KB
cenhance.h 2KB
cicircleshape.h 2KB
cifeature.h 1KB
ialgorithm.h 1KB
error.h 1KB
qimggraphicsview.h 1KB
qimggraphicsitem.h 1KB
cmeasurement.h 996B
csegment.h 813B
ciimageshape.h 780B
cerror.h 570B
cbasefunctions.h 534B
cerror.h 430B
ciscene.h 413B
cmatching.h 277B
globalval.hpp 1KB
icon.ico 271KB
2.ico 264KB
README.md 5KB
Gray_Gamma.png 61KB
Gray_Histeq.png 51KB
ImageProcessing.png 47KB
Geom_RotateCenter.png 37KB
3.png 35KB
img_black.png 32KB
img_white.png 31KB
Geom_Flip.png 27KB
app_imgprocess.png 27KB
Gray_Linear.png 26KB
Gray_Log.png 15KB
2.png 14KB
Rhombus.png 13KB
Gray_Reverse.png 11KB
Gray_Bin.png 10KB
Triangle.png 8KB
Geom_FlipX.png 8KB
Geom_FlipY.png 7KB
Hexagon.png 7KB
Geom_Default.png 7KB
Geom_EnlargeReduce.png 5KB
Geom_Enlarge.png 4KB
Geom_Reduce.png 4KB
Octagon.png 4KB
Gray_Gray.png 3KB
Geom_Center.png 3KB
Gray_Nolinear.png 3KB
Circle.png 2KB
Help_Info.png 2KB
Square.png 2KB
Elipse.png 2KB
Process.png 2KB
Measurement.png 2KB
Geom_RotateRight.png 2KB
Geom_RotateLeft.png 2KB
Check.png 2KB
Geom_Rotate.png 2KB
Segment.png 2KB
Cut.png 1KB
Edit_Cancel.png 1KB
Edit_Resume.png 1KB
SaveAs.png 1KB
Painbrush.png 1KB
Matching.png 1KB
Edit_Full.png 1006B
Close.png 966B
New.png 952B
Open.png 926B
last_File.png 702B
next_File.png 694B
Save.png 657B
Edit_Option.png 533B
共 112 条
- 1
- 2
资源评论
白话Learning
- 粉丝: 3474
- 资源: 2535
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功