Python 如何将头发颜色改为紫色?

Python 如何将头发颜色改为紫色?,python,computer-vision,Python,Computer Vision,我的代码有问题吗?我想把下面图片的头发颜色从绿色改为紫色。然而,我的输出看起来很奇怪,如果有计算机视觉/图像处理经验的人能帮我解决这个问题,我将不胜感激 from scipy import misc,ndimage import matplotlib.pyplot as plt import numpy as np def dye_hair(filename): pic = misc.imread(filename) output = [] for i in range

我的代码有问题吗?我想把下面图片的头发颜色从绿色改为紫色。然而,我的输出看起来很奇怪,如果有计算机视觉/图像处理经验的人能帮我解决这个问题,我将不胜感激

from scipy import misc,ndimage
import matplotlib.pyplot as plt
import numpy as np

def dye_hair(filename):
    pic = misc.imread(filename)
    output = []
    for i in range(len(pic)):
        for j in pic[i]:
            if (j[1] > j[0]) & (j[1] > j[2]):
                pic[i][j] = [j[0]*2,j[1]*0.2,j[2]*0.8]
plt.imshow(pic)
plt.show()
逻辑是这样的,如果像素绿色值大于红色和蓝色值,则将颜色替换为[R*2,G*0.2.B*0.8]


这是因为您没有遍历所有列。你应该为范围内的j(len(pic[i])做
试试这个:

def dye_hair(filename):
    pic = misc.imread(filename)
    output = []
    for i in range(len(pic)):
        for j in range(len(pic[i])):
            if (pic[i][j][1] > pic[i][j][0]) and (pic[i][j][1] > pic[i][j][2]):
                pic[i][j] = [pic[i][j][0]*2,pic[i][j][1]*0.2,pic[i][j][2]*0.8]
    plt.imshow(pic)
    plt.show()

对于初学者,使用
,而不是
进行布尔运算。仍然可以获得相同的输出!你的解决方案奏效了!我花了一些时间试图理解imread返回的是什么,一定错过了迭代专栏。如果成功的话,你能接受并投票支持我的答案吗?