在我的代碼中,我試圖導入一個灰度圖像(二維數組),然後根據我提出的經驗公式求解光密度(OD)。光密度與灰度值有關,其中f是陣列中每個元素的灰度值。然後,我將它轉換成RGB圖像。如果語句循環遍歷Python中的單個元素
我的問題是我想運行圖像數組中的每個單獨的元素到if語句中。儘管如此,它並沒有進入聲明。我想要做的是根據光密度滿足什麼條件來增加R,G和B中每個單獨元素或像素值的強度。假設它的OD值落在b和c之間,它會將[128,0,0]添加到滿足該條件的每個元素。
t = Image.open("IMG_1.jpg").convert('L') #grayscale image
f = array(t) #Convert test image into an array
OD = 0.51*((f-22.08)/(176.09-f))**(1./-1.519) #Empirical Rodbard formula
OD[np.isnan(OD)] = 0
def to_rgb5(im):
OD.resize((OD.shape[0], OD.shape[1], 1))
return np.repeat(OD.astype(np.uint8), 3, 2)
cmap = plt.get_cmap('jet')
rgba_img = cmap(OD)
rgb_img = np.delete(rgba_img, 3, 2)
a = 0.08
b = 0.11
c = 0.15
if np.all(OD < a):
background_noise = rgb_img
if np.all(OD < b):
small = rgb_img + [128, 0, 0]
elif np.all(OD >= c):
large = rgb_img + [0, 0, 128]
Red = f + small
Green = f
Blue = f + large
請問你的代碼拋出錯誤建議np.where?製表看起來不對,':'缺少 – Stuart
對不起,我失去了應對它。唯一發生的是它說「NameError:name'small'沒有定義」 –
懷疑它。 'else np.all(OD> = C)'不能工作。 –