基于Voronoi图的自定义轮廓内的随机纹路生成

代码 github:https://github.com/FrozenWhalePP/randomPicture

总览

Voronoi图

图像边缘检测

  • 检测一张图片主题元素的轮廓边界,并提取边界坐标
  • 基于pythonopencv-python中的cv2.findContours()实现

程序文件

random_pic.py

  • 给出一张图片,得到图片中主要元素的边界轮廓。
  • 产生N个随机数,使得落在边界内部。
  • 根据产生的点,绘制Voronoi图
  • 可调整参数:
    • 根据图片是否足够简洁确定边界的精度
    • 随机点的数目
    • 绘制的图形线条颜色,宽度,透明度
    • 图形的长宽比,尺寸等

random_pic_color.py

  • random_pic.py的基础上,重写了Voronoi图的绘制函数(参考Stack Overflow上的回答)
  • 去线条,使用彩色填充
  • 可选参数:
    • 如上
    • 填充颜色的透明度

注意

  • 图片的边缘检测,轮廓提取算法参考的他人博客,目前精度还有待提升。如果图片元素过多,线条复杂,则效果不佳。建议使用简笔画。
  • random_pic_color.py目前存在一定BUG,导致KeyValue错误,但是不稳定,失败/成功比例大概为3/1。

展示

线条

  • 冰冻鲸鱼
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 运动鞋
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 红色高跟鞋基于Voronoi图的自定义轮廓内的随机纹路生成
  • 小王子中的蛇吞象
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 橘色的花瓶
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 冰冷的铁塔
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 迟到的圣诞树
基于Voronoi图的自定义轮廓内的随机纹路生成

色块填充

  • 运动鞋
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 不一样的埃菲尔铁塔
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 奇怪的帽子
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 彩色高跟鞋
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 彩色鲸鱼
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 丑丑的圣诞树
基于Voronoi图的自定义轮廓内的随机纹路生成

改变随机点个数

  • 鲸鱼
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 稀疏裂纹圆
基于Voronoi图的自定义轮廓内的随机纹路生成
  • 密圆
基于Voronoi图的自定义轮廓内的随机纹路生成