簡體   English   中英

如何使用numpy更改圖像中的顏色通道?

[英]How can I change a color channel in an image using numpy?

我有一個圖像,其中像素中的某些顏色通道的值為零(即255,146,0)。 我希望能夠將數組中等於零的任何值更改為不同的值,但我不知道如何訪問這些值。 對此有何幫助?

這是圖像數組:

[[[ 76 163 168]
  [109 166 168]
  [173 172 167]
  ..., 
  [ 83 182 144]
  [ 78 172 134]
  [ 82 150 131]]

 [[ 51 151 168]
  [ 99 157 171]
  [173 195 159]
  ..., 
  [ 56 165 144]
  [ 25 198 125]
  [ 35 185 121]]

 [[ 76 163 121]
  [112 147 120]
  [175 151 118]
  ..., 
  [ 57 162 159]
  [ 36 185 132]
  [ 32 194  97]]

 ..., 
 [[ 78 189 126]
  [ 68 173 129]
  [ 58 171 150]
  ..., 
  [ 41 188 163]
  [ 34 176 126]
  [ 35 176 102]]

 [[131 155 161]
  [101 141 161]
  [ 42 151 177]
  ..., 
  [ 56 178 122]
  [ 45 192 114]
  [ 46 184 112]]

 [[130 157 185]
  [ 83 141 185]
  [ 42 158 185]
  ..., 
  [ 63 187  88]
  [ 45 194 102]
  [ 45 184 129]]]

使用masking -

img[(img==zero_val).all(-1)] = new_val

,其中zero_valzero顏色, new_val是在我們zero顏色像素的那些地方分配的新顏色。

樣品運行 -

# Random image array
In [112]: img = np.random.randint(0,255,(4,5,3))

# Define sample zero valued and new valued arrays
In [113]: zero_val = [255,146,0]
     ...: new_val = [255,255,255]
     ...: 

# Set two random points/pixels to be zero valued
In [114]: img[0,2] = zero_val

In [115]: img[2,3] = zero_val

# Use proposed approach
In [116]: img[(img==zero_val).all(-1)] = new_val

# Verify that new values have been assigned
In [117]: img[0,2]
Out[117]: array([255, 255, 255])

In [118]: img[2,3]
Out[118]: array([255, 255, 255])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM