- 项目整合
- 代码量及工作量总结
- 项目总结
一、项目整合
各部分的功能完成后,由组员对功能进行整合并完善UI界面。之后对功能的修改也要调整对应的UI部分
def image_update(self):
self.m_QImage = QImage(self.m_image[:], self.m_image.shape[1], self.m_image.shape[0], self.m_image.shape[1] * 3,
QImage.Format_RGB888)
self.m_image_width = self.m_image.shape[1]
self.m_image_height = self.m_image.shape[0]
self.pixmap = QPixmap(self.m_QImage)
self.lbl.setPixmap(self.pixmap)
self.lbl.resize(self.m_image_width, self.m_image_height)
self.lbl.setGeometry(self.image_center_x-self.m_image_width*0.5, self.image_center_y-self.m_image_height*0.5, self.m_image_width, self.m_image_height)
对于每个功能的结果,不通过新窗口而通过update函数更新在主界面上。
instance.m_image=res
instance.updata_image()
二、工作量及代码难度总结
- AI接口调用:
-
功能:
- 人像抠图
- 无损放大
- 图像去雾
- 图像清晰度增强
- 黑白图像上色
- 图片风格化——绘画风格
-
技术点:
-
接口调用
- request接口请求
- 直接使用aip包中的函数,如AipBodyAnalysis
-
图片格式转换
-
f = open(imgfile, ‘rb’) 二进制方式读取
-
base64.b64decode解码
-
转换为opencv可用格式
- res_array=np.frombuffer(res, np.uint8)
- res=cv2.imdecode(res_array, cv2.COLOR_RGB2BGR)
-
-
-
Opencv算法编写
-
图像马赛克功能
——图像采样
-
去除遮挡物、水印
- 快速行进算法(cv2.INPAINT_TELEA)
- 基于流体动力学的偏微分方程(cv2.INPAINT_NS)
-
HDR高动态范围处理
- 利用曝光时间估计相机相应函数
- 合成HDR图像后实现色调映射
-
色彩均衡化
-——自动色彩均衡化(Automatic Color Enhancement,ACE)算法
-
颜色检测函数
- 鼠标回调函数
- 颜色格式转换cv2.cvtColor(np.uint8([[bgr]]), cv2.COLOR_BGR2YCrCb)[0][0]
- 使用占位符显示数值 cv2.putText(placeholder, “BGR {}”.format(bgr), (20, 70), cv2.FONT_HERSHEY_COMPLEX, .9, (255, 255, 255), 1, cv2.LINE_AA)
-
批量调整图片尺寸
- 通过os.listdir和file_filter函数读取文件夹中的所有图片文件
-
透视变换校正
- 指定顶点构造透视变换矩阵
- Canny边缘检测算法获取顶点构造透视变换矩阵
- 傅里叶变换及Hough直线检测获取图片倾斜角度从而使用仿射变换进行旋转
-
三、项目总结
我们团队在明确方向后,从确定项目选题,到配置环境、编写功能和UI界面、项目整合,分工明确,不仅实现了数媒专业所学的图像处理功能之后,还添加了较为实用的AI功能。既可以作为数媒专业的教学工具,也可以作为功能全面的图象处理软件发布。
在项目进行过程中,我个人遇到了诸如环境三四天没有配成、功能实现困难等各种问题,但都在自己的学习和队友的帮助下一一实现了。在这次创新项目实训过程中,我不仅锻炼了自己的代码能力,更收获了项目合作的经验,了解了软件UI编写的主要框架。虽然不知道最终结果如何,但很荣幸能参与这样的一次项目实训。