wikiの例を再現します。
繰り返し列:AB
プログラム
import numpy as np import cv2 b_hsv = cv2.cvtColor(np.uint8([[[255,0,0]]]),cv2.COLOR_RGB2HSV)[0][0] Px,Py = 360,360 s = [0,1] # AB S = [] # 周期列 M = int(Px*Py/len(s))+1 for i in range(M): S.extend(s) img = np.zeros((Px, Py,3), np.uint8) xmin,xmax = 2,4 ymin,ymax = 2,4 def get_color(x,y): a = (xmax-xmin)*x/Px+xmin b = (ymax-ymin)*y/Py+ymin N = 100 x = 0.5 lmd = 0 for n in range(N): if S[n] == 0: r = a else: r = b new_x = r*x*(1-x) lmd += np.log(abs(r*(1-2*new_x))) x = new_x lmd /= N if np.isinf(lmd): lmd = 0.0 s = 255*lmd/3 v = s r,g,b = cv2.cvtColor(np.uint8([[[b_hsv[0],s,v]]]),cv2.COLOR_HSV2RGB)[0][0] return [r,g,b] for x in range(Px): for y in range(Py): img[x][y] = get_color(x,y) cv2.imwrite('test.png', img)
実行結果
繰り返し列:AABAB
プログラム
s を以下のように書き換える。
s = [0,0,1,0,1]
実行結果
繰り返し列:BBABBAABA
実行結果