iT邦幫忙

0

影像處理基本問題,灰階漸層

請問python 要如何做出512x512的灰階影像
由左上全黑自右下白色(0~255)的影像

初學感謝各位

2 個回答

1
ccutmis
iT邦高手 4 級 ‧ 2021-03-18 11:42:30

上網搜了相關主題 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

1
jwaiting
iT邦新手 5 級 ‧ 2021-03-18 14:36:40

如果你是個初學者,蠻建議你找個基礎的學習影片,學習如何操作mat。
要完成你的需求基本思路大概是

建立一個512X512的畫布在python可以只是個矩陣,
然而在C++會是一個mat型別的變數(雖然本質也是一個矩陣)。

而矩陣內會是RGB的數值也就是一個純量,如果只要單純的灰階可以均給相同的數值如
從左上 Scalar(0, 0, 0)全黑 繪製到 右下Scalar(255, 255, 255)全白

LEARN OPENCV in 3 HOURS with Python

影片中的Chapter 4 會帶你繪製直線、矩形、圓形,
你可以根據你的需求去做變化。

我要發表回答

立即登入回答