一、骰子作画
骰子作画是程序员Scott MacDonald做了一个很有趣的项目,他用一张黑底白点的骰子模拟出了一些人像照片。
任何一张图片都可以用骰子模拟出来,算法非常简单:将图片分成若干个区域,每个区域经过计算以后,用1-6之间的一个整数表示,代表骰子的一个面。这种将连续的量转化成不连续的整数的算法,属于vector quantization(矢量量化)的一个应用。
二、代码实现
# -*- coding: utf-8 -*-
from PIL import Image
import os
import numpy as np
#骰子图像存储路径
imgSrc = ['xxx\\touzi1s.bmp','xxx\\touzi2s.bmp','xxx\\touzi3s.bmp','xxx\touzi4s.bmp','xxx\\touzi5s.bmp','xxx\\touzi6s.bmp']
IMAGE_SAVE_PATH = "xxx\\output1.bmp"
list = np.ones((64,64))*0
def e(average):
if 0 < average <= 42:
return 0;
elif 42 < average <= 85:
return 1;
elif 85 < average <= 127:
return 2;
elif 127 < average <= 169:
return 3;
elif 169 < average <= 211:
return 4;
elif 211 < average <= 255:
return 5