处理含身份证号、车牌片的政企片子,最怕导出后发现漏了敏感信息。
我们做这个项目时踩过几个真坑,都是实测数据跑出来的。
转场让遮罩"幽灵化"
人物离场+硬切后,遮罩还盖在新画面上约1.3秒。排查发现全片749个采样帧里,硬切判据一次都没触发------灰度直方图在真实切点的实测值0.173低于阈值0.40,HSV也低于0.72。跟踪器外推靠MAX_MISSED=20步(12fps约1.33秒),根本不判断转场。
修法是不动硬切判据(误判代价是清空该清的状态),加一条"遮罩是否继续外推"的软判据:多路投票、阈值分别取0.12/0.20/0.10,不跨过转场继续外推。用ffmpeg的select=gt(scene,0.2)独立核对切点位置。
ID撞号导致整段人脸没打码
硬切后重启追踪器,track id从1重新编号。旧轨只从活跃列表删、数据保留到后处理。新来的第一个人也拿到tid=1,一行赋值把旧轨道冲掉------实测一条被追踪4.6秒、76帧的脸最终遮罩为零。
修法是"安置"而非"合并":给被撞下来的老轨分配一个新key继续保留。下游按时间二分插值要求每个key是单条单调轨,两条轨倒进一个列表会让遮罩在两人脸间来回跳。
新车入画的隐私窗口期
淡入阶段首帧alpha只有1/3,配合抽样间隔(25fps素材每80ms采一帧),人脸露出后有约130~160ms没盖满。
对出现≥6次的"扎实轨"做事后回填:把开头半透明帧抬到满遮罩、段起点往前延一个采样步,加三重收口防止把淡出误补进来。
项目用PySide6搭界面,耗时操作放QThread后台跑。模型全内置随包分发,不联网下载。Windows和macOS各独立构建,不能交叉编译。
本文来自抹影的开发笔记。