【问题标题】:How to change hair color to purple?如何将头发颜色变为紫色?
【发布时间】:2019-02-19 16:39:49
【问题描述】:

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

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]

green-haired-girl

【问题讨论】:

  • 对于初学者,使用and,而不是& 进行布尔运算。
  • 仍然得到相同的输出

标签: python computer-vision


【解决方案1】:

这是因为您没有遍历所有列。你应该这样做for j in range(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 返回的内容,一定是错过了那个迭代列
  • 如果成功了,你能接受并支持我的回答吗?
猜你喜欢
  • 2021-03-27
  • 2014-12-31
  • 1970-01-01
  • 2017-07-31
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
相关资源
最近更新 更多