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

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

总览

Voronoi图

  • Voronoi图又称泰森多边形或者Dirichlet图,由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。具体特点见百度百科。 https://baike.baidu.com/item/%E6%B3%B0%E6%A3%AE%E5%A4%9A%E8%BE%B9%E5%BD%A2/3428661?fromtitle=voronoi&fromid=9089406&fr=aladdin
  • 基于python实现,scipy.spatial.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图的自定义轮廓内的随机纹路生成_第1张图片
  • 不一样的埃菲尔铁塔
基于Voronoi图的自定义轮廓内的随机纹路生成_第2张图片
  • 奇怪的帽子
基于Voronoi图的自定义轮廓内的随机纹路生成_第3张图片
  • 彩色高跟鞋
基于Voronoi图的自定义轮廓内的随机纹路生成_第4张图片
  • 彩色鲸鱼
基于Voronoi图的自定义轮廓内的随机纹路生成_第5张图片
  • 丑丑的圣诞树
基于Voronoi图的自定义轮廓内的随机纹路生成_第6张图片

改变随机点个数

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

你可能感兴趣的:(随心所欲的想法,python,算法)