video-poster

国外小哥用10000颗骰子拼出老詹

avatar
关注

不多说 直接上图

搬运自抖音: 🎲骰子兄弟

太燃了阿🔥🔥🔥

发布于广东阅读 143375

这些回复亮了

discusser-avatar

橙澈听雨眠

· 福建

这个是真滴🐮🍺

亮了(257)
查看回复(2)
回复
discusser-avatar

TimFocker

· 上海

这个其实不难做到,原理就是用骰子来表现灰度,对应的算法非常简单,将原始图片分成若干个区域,灰度用1-6之间的一个整数表示,代表骰子的一个面。白点越少,表示这个区域越接近全黑;白点越多,表示越接近全白。这样来模拟出灰度。如果区域划分得越小,模拟图的生成效果就越好。其实也不一定是骰子,用魔方也比较合适。for (int i=0; i < (pic_width/16); ++i) {    for (int j=0; j < (pic_height/16); ++j) {      patch = cropped_img.get(i*16, j*16, 16, 16);    }  }for (int k=0; k < patch.pixels.length; ++k) {   x[k] = rgb2gray(patch.pixels[k]);  }  int rgb2gray(int argb) {    int _alpha = (argb >> 24) & 0xFF;    int _red = (argb >> 16) & 0xFF;    int _green = (argb >> 8 ) & 0xFF;    int _blue = (argb) & 0xFF;    return int(0.3*_red + 0.59*_green + 0.11*_blue);  }int dice_num = six_step_gray(mean(x));  int mean(int[] x) {    float m = 0;    for (int i=0; i < x.length; ++i) {      m += x[i];    }    m = m/x.length;    return int(m);  }  int six_step_gray(int x) {    if (0 <= x && x <= 41) return 1;    if (41 < x && x <= 83) return 2;    if (83 < x && x <= 124) return 3;    if (124 < x && x <= 165) return 4;    if (165 < x && x <= 206) return 5;    if (206 < x && x <= 247) return 6;    else return 6;  }用Photoshop也可以得到类似效果。电脑生成图片后,可以手动对应摆上骰子,这才是工作量大的地方。10000个骰子得拼20个小时吧,建议大家可以拼拼16*16http://www.ruanyifeng.com/blog/2011/11/dice_portrait.html

亮了(123)
查看回复(26)
回复