如何根据条件更改像素值
How to change pixel value based on a condition
图像为 1920 x 1080。
当通道值高于另一个时,如何更改像素值?
这是我做的。
y_range = 1080
for y in range(y_range):
x = 0
while x < 1920:
green_value = img[y, x][1]
red_value = img[y, x][2]
diff = int(red_value) - int(green_value)
if diff < 5:
img[y, x] = [0, 0, 0]
x = x + 1
有没有比在每个像素上迭代更有效的方法?
不要为此使用任何循环,使用 ndarray
功能和逻辑索引。
你想要实现的是这样的:
d = img[:,:,2] - img[:,:,1] # Difference of color channels
q = d < 5 # Threshold criterion
img[q] = [0,0,0] # Overwrite data based on threshold
假设您的图像是 BGR 格式,并且您希望红色和绿色通道之间有符号差异。如果您指的是距离变化:
d = np.abs(img[:,:,2] - img[:,:,1]) # Distance between color channels
图像为 1920 x 1080。 当通道值高于另一个时,如何更改像素值?
这是我做的。
y_range = 1080
for y in range(y_range):
x = 0
while x < 1920:
green_value = img[y, x][1]
red_value = img[y, x][2]
diff = int(red_value) - int(green_value)
if diff < 5:
img[y, x] = [0, 0, 0]
x = x + 1
有没有比在每个像素上迭代更有效的方法?
不要为此使用任何循环,使用 ndarray
功能和逻辑索引。
你想要实现的是这样的:
d = img[:,:,2] - img[:,:,1] # Difference of color channels
q = d < 5 # Threshold criterion
img[q] = [0,0,0] # Overwrite data based on threshold
假设您的图像是 BGR 格式,并且您希望红色和绿色通道之间有符号差异。如果您指的是距离变化:
d = np.abs(img[:,:,2] - img[:,:,1]) # Distance between color channels