Computer vision Image.open(os.path.join(origin#u path,name)).convert(';P';)中是否存在任何问题?

Computer vision Image.open(os.path.join(origin#u path,name)).convert(';P';)中是否存在任何问题?,computer-vision,python-imaging-library,Computer Vision,Python Imaging Library,我通过opencv更改了pascal数据集中的一些图像,然后我需要将它们转换为p模式。 我使用img=Image.open(os.path.join(origin\u path,name)).convert('P')将RGB图像转换为P模式。但是新图像有点奇怪。为什么新图像的颜色不像原始图像那样平滑? 这对我的训练有害吗?我该怎么处理 原始图像 新形象 哦,我明白了。您想修改调色板。您可以这样做: #!/usr/bin/env python3 import numpy as np from

我通过opencv更改了pascal数据集中的一些图像,然后我需要将它们转换为p模式。 我使用
img=Image.open(os.path.join(origin\u path,name)).convert('P')
将RGB图像转换为P模式。但是新图像有点奇怪。为什么新图像的颜色不像原始图像那样平滑? 这对我的训练有害吗?我该怎么处理

原始图像

新形象


哦,我明白了。您想修改调色板。您可以这样做:

#!/usr/bin/env python3

import numpy as np
from PIL import Image

# Load the source image
im  = Image.open('original.png') 

# Extract the palette into a Numpy array and reshape as 256 RGB triplets
palette = np.array(im.getpalette())
colorVectors = np.reshape(palette,(-1,3))

# Replace any palette entries consisting of [192,128,128] with yellow [255,255,0]
colorVectors[np.all(colorVectors==[192,128,128],axis=-1)] = [255,255,0]

# Put modified palette into image and save
im.putpalette(colorVectors.ravel().tolist())     
im.save('result.png')
原始图像

输出图像


如果您知道要更改特定的调色板条目,并且您知道它是条目
0
,则可以执行以下操作:

#!/usr/bin/env python3

import numpy as np
from PIL import Image

# Load the source image
im  = Image.open('original.png') 

# Extract the palette into a Numpy array and reshape as 256 RGB triplets
palette = np.array(im.getpalette())
colorVectors = np.reshape(palette,(-1,3))

# Make palette entry 0 into magenta
colorVectors[0]=[255,0,255]

im.putpalette(colorVectors.ravel().tolist())
im.save('result.png') 



关键词:Python、PIL、枕头、调色板、托盘化、PNG、修改调色板、更改调色板、更改调色板、替换调色板、图像、图像处理。

您的原始图像已经是调色板图像。是,问题在于,我使用cv2更改了它的像素,然后使用imwrite保存图像。但它是RGB,在训练过程中无法工作。所以我需要将RGB转换为调色板。我没有找到opencv方法来执行此操作。所以我使用img=image.open(os.path.join(origin_path,name)).convert('P')。但效果不好,我不明白。您的原始图像已经是调色板图像-您不需要使用OpenCV或PIL打开它以将其转换为调色板图像,因为它已经是调色板图像。因为我需要更改原始图像的某些像素以将某些颜色部分更改为另一种颜色。类似于将[0128,0]更改为[0,0,0]