背景
《智能图像处理》课程大作业,要求做一个综合性的图像处理桌面应用。最终交付了一个基于 PyQt5 的多功能工具集:二维码识别、车牌识别、人脸与表情检测、图像拼接四大模块,支持图片、视频与摄像头实时三种输入方式。
问题定义
课程作业容易做成“四个 demo 放进四个窗口”。我希望它是一个统一的工具:同一套文件选择与摄像头管理逻辑服务所有模块,每个模块都能处理静态图、视频文件和实时画面三种输入,结果可以导出保存。
方案
二维码识别。pyzbar 解码灰度图,检测到的二维码用凸包描边标注;支持多码同屏——每个码位置生成一个可点击按钮,直接打开对应链接。视频与摄像头模式下用定时器控制帧率,识别成功自动停帧展示。
车牌识别。调用云端 OCR 车牌识别接口,返回车牌位置后裁剪出车牌区域单独展示,同时显示号码与颜色,识别结果可导出为文本文件。
人脸与表情检测。Haar 级联分类器检测人脸,在人脸上半部检测眼睛、下半部检测微笑,分别用不同颜色矩形框标注。检测逻辑按人脸区域裁剪 ROI,减少误检。
图像拼接。先对两张图做柱面投影校正畸变,ORB 提取特征点与描述符,FLANN 快速匹配并筛选优质匹配点,RANSAC 估计单应性矩阵,透视变换对齐后在重叠区域做加权融合,输出无缝全景图。
我的角色
独立完成界面设计、四个模块的算法实现与三种输入方式的统一调度。
结果
四大功能均稳定可用,摄像头实时模式下帧率与识别节奏可控,拼接模块在多数实拍场景下能得到自然过渡的全景结果。
复盘
这是第一个真正意义上的“桌面软件”,最大的收获是工程组织方式:输入源管理、定时器与 UI 状态同步这些琐碎问题,决定了软件是“能演示”还是“能用”。特征匹配 + RANSAC 这套经典管线也让我对后来 YOLO 时代的端到端方法有了更清楚的对比认知。