说到登记照改换底色功能的实现,我想大部分人都会认为使用opencv或者机器学习方法对图像进行图像分割、边缘检测、基于语义的物体检测、无监督的像素分类算法等等算法是最好的途径。
而我最近实现了一个登记照改换底色的小工具,可以任意设置登记照的底色,不局限于蓝白红三种最基本的登记照背景颜色。并且它可以根据实际情况来调整背景的色彩、亮度等等,可以让修改底色之后的登记照显得更真实些。
最关键的是,他是纯前端js完成的,是通过操控canvas中的像素点来实现换底色的,并没有用到专业的图像处理或者机器学习方法来进行,纯前端完成,并且效率还挺高的。
事实上,我一开始也尝试使用了tensorflow提供的demo进行图像分割等,实际上效果并不是特别的好,它很适合通过语义将图片内容进行识别和分类,然而却不适合作为像素级的图像分割方式。而opencv却太依赖于java或者c++等语言来开发,在纯前端使用js是比较难与opencv结合使用的。所以最后都放弃了。
这是工具的地址,大家可以先体验一下效果:在线登记照改换底色,证件照改换背景色工具https://w