用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

这是最终得到的效果,如果你的图片集不同,或者参数设置不同,效果也会有差别。

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

进群:548377875   即可获取数十套PDF哦!源码就不分享给大家了!

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

1,收集图片素材

要做出上述的效果来,首先就需要大量的图片,图片少了,效果肯定不好,容易重复,需要的像素值找不到相近的等等弊端。人工收集图片的话肯定是非常慢的,如果要手工下载图片,那至少要找图片找很多天了。这个时候一般有两个解决途径:

  • 爬取图片

用网络爬虫从别的网站上爬取图片是个不错的选择,也可以用python来实现。

  • 下载图片数据集

网络上有别人已经整理好的图像数据集,我使用的是斯坦福大学李飞飞制作的ImageNet数据集。这个数据集是计算机视觉领域常用的一种数据集,它的训练集大概有100多个G,测试集有10多个G,只是测试集就有10万张图片,够本工程使用了。所以我下载的是他的测试集。网速快的话可以十来分钟就下载下来。图片数据集的迅雷下载链接

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

3,建立索引

建立索引就是保存每张图片出现次数最多的像素值然后保存到文件中。格式为:

文件名称:B,G,R

建立好索引文件之后,就可以知道每个图片和他们最常见的颜色。在使用这些图片的时候,就可以读取整个索引文件,然后定位到图片文件本身。试想一下,如果没有这些索引文件,那么生成一次马赛克拼图就要求一次所有图片的最多像素,太多冗余了。下面是代码:

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

生成的索引文件格式是这样的:

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

4,画图

首先是读取步骤3生成的索引文件。然后可以选择打乱它,以免一样的图片聚集出现在一个位置附近。

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图

大功告成。

下面是我的时间统计:

  • 下载图片用了三个多小时
  • 图片预处理用了一个多小时
  • 建立索引大概需要一个多小时
  • 之后画每个一万个像素点左右的图片大概需要三分钟的时间

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/81979402