天天看点

processing使用python画图_Image-Processing

Image-Processing

图像处理软件(程序运行平台为Windows,Python实现)

功能有美白、磨皮、滤镜(雕刻、哈哈镜、波浪、冰冻、怀旧、黑白、模糊、灰度)

processing使用python画图_Image-Processing
processing使用python画图_Image-Processing

界面设计

pyqt5设计,UI和功能代码分离。其中UI利用工具QT designer设计,生成.ui文件以后利用pyuic转换成python代码。

【A】.图片显示界面用scrollArea控件,其中填充scrollAreaWidgetContents这个控件,再在里面用Qlabel显示图片,scrollArea的属性设置里设置为显示滚动条以确保图片太大时可以通过滚动条来查看整张图片。

【B】.选项控件部分用QButton,QSpin,QCheckBox控件分别实现按钮、数字选择框、复选框功能。信号槽在主程序中实现。

功能设计和实现

【磨皮】:先使用双边滤波对图像处理平滑图片噪声可以较好地保留边缘,继续使用高斯模糊对细节进行处理,参数由滑动条spin动态控制。

【美白】:给图像中的每个像素增加灰度值,addWeighted函数,对自身加成,第五个参数给图像中每个像素增加一定的像素值。

【滤镜】:滤镜的算法的主要原理:

黑白:cv2.threshold函数处理图像

灰度:以opencv的灰度读入后再写出图像

模糊:高斯模糊函数GaussianBlur处理

怀旧、冰冻、浮雕:将原图颜色通道分离,对每一点的RGB三色调整,具体算法参考网上博客给出

波浪:利用正弦函数给出的位置,将正弦波涉及的区域的像素值调整方位

哈哈镜:求出图片所能放置的最大圆,圆内部分像素点按[离中心距离]与[圆半径]之比缩放,即外部的点的像素等于内部点的像素。

【选项选中与撤销】类内成员变量设置state_filter数组和state_beauti、state_buff表明各个选项是有勾选,当触发复选框且状态为选中的时候会调用显示函数showPic,showPic内部判断上述的state,显示应该显示的内容。

【缓存处理】滤镜功能第一次计算的时候时间较长,同样利用flag保存第一次处理结果,之后重新勾选该选项时即可使用缓存的图片

【另附】

1.打开文件选项关联的函数里增加了一些代码用于重置每次打开文件的时候需要重置一些状态,以确保不会和第一次打开的图像混淆。

2.由于滤镜的覆盖性太强,所以融合功能只用于美白和磨皮两项,即同时选中美白和磨皮两项的时候回将两幅图叠加起来。

3.由于以上原因,showPic函数增加了参数判断是否要显示滤镜(因为滤镜和磨皮美白这两项的融合有矛盾)