上網搜了相關主題 PIL好像能辦到類似樓主要的東西
以下是範例:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw
def interpolate(f_co, t_co, interval):
det_co =[(t - f) / interval for f , t in zip(f_co, t_co)]
for i in range(interval):
yield [round(f + det * i) for f, det in zip(f_co, det_co)]
gradient = Image.new('RGBA', (img_width,img_height), color=0)
draw = ImageDraw.Draw(gradient)
img_width,img_height=512,512
f_co = (0, 0, 0)
t_co = (255, 255, 255)
for i, color in enumerate(interpolate(f_co, t_co, img_width * 2)):
draw.line([(i, 0), (0, i)], tuple(color), width=1)
gradient.show()
#gradient.save('test-gradient.png','PNG')
參考資料來源: https://gist.github.com/weihanglo/1e754ec47fdd683a42fdf6a272904535
如果你是個初學者,蠻建議你找個基礎的學習影片,學習如何操作mat。
要完成你的需求基本思路大概是
建立一個512X512的畫布在python可以只是個矩陣,
然而在C++會是一個mat型別的變數(雖然本質也是一個矩陣)。
而矩陣內會是RGB的數值也就是一個純量,如果只要單純的灰階可以均給相同的數值如
從左上 Scalar(0, 0, 0)全黑 繪製到 右下Scalar(255, 255, 255)全白
影片中的Chapter 4 會帶你繪製直線、矩形、圓形,
你可以根據你的需求去做變化。