用opencv给彦女王生成一副蒙太奇画像
前言 大家好呀,前两天烈阳天道1上映了,不知道大家看没看呢,里面还有一小段彦穿越虫洞与猴哥相遇的画面,彦女王啊啊啊~~ 所以我去网上爬了二百来张我大学的风景画,然后找了以前存的彦女王的图片,生成了一幅蒙太奇画像。然后我两个热爱的就合体啦! 先看一下什么是蒙太奇图像吧,其实你肯定见过,只不过不知道叫蒙太奇而已: 一张大的图片,是由很多小的图片拼接而成的这种,就是蒙太奇图像啦(或者叫马赛克拼图),我要做的就是把我大学的风景图拼成彦的图片。 综述实现思路 文末附有python代码,本文为我写的C++代码 1:读取文件夹内的风景图片集,将每张剪裁到90*45大小并存入Mat容器内 2:将图片模板(彦的照片)扩大为1600*2700大小 3:计算图片集的直方图并将结果存到MatND容器内(直方图容器) 4:双重for循环以90*45的步长遍历图片模板计算各个区域的直方图,并将区域直方图与图片集的直方图进行比对,得到相似度最高的风景图片,将该风景图片替换模板对应区域 5:将4步得到的蒙太奇图与原模板图线性相加,得到更为逼真的效果 是不是很简单的过程?但就这么个过程,我调了一天的bug,然后被迫深入理解了C++的动态回收机制… … 建议感兴趣的小伙伴自己实现一下。 以下代码在主函数内顺次复制粘贴即可 1:读取图片集并预处理 //【1】图片集的采集与处理 int Images_number =