相关疑难解决方法(0)

如何使用PIL减少调色板

我不确定如何减少PIL图像的调色板.我想将图像的调色板缩小为该图像中的5种突出颜色.我的总体目标是做一些基本的颜色采样.

python image colors palette python-imaging-library

14
推荐指数
2
解决办法
2万
查看次数

如何将颜色减少到指定的调色板

我需要解决以下问题:

输入:图像 IM,调色板 PA

OUTPUT: IM 只有 PA 的颜色

输入图像是 RGB,但我可以将其转换为 HSV。我指定的颜色目标调色板目前包含:黑色、白色、浅灰色、灰色、深灰色、蓝色、粉红色、红色、紫色、绿色、黄色、棕色、橙色。

我为此搜索了很多,但我只能找到将图像减少到最常见的颜色或将其减少到固定的调色板,例如 16 色 EGA 图形。

我找到了最好的答案: 如何使用 Python 成像库将任何图像转换为 4 色调色板图像?

它有一个输入调色板并将图像缩小到那个程度。在 OpenCV 中使用 C++ 是否有相同的方法?

c++ opencv cluster-analysis colors image-processing

5
推荐指数
1
解决办法
2397
查看次数

使用PIL将图像转换为特定调色板而不抖动

我正在尝试使用Pillow库(Python Image Library,PIL)将PNG格式的RGB图像转换为使用特定的索引调色板.但是我希望使用"圆形到最接近的颜色"方法进行转换,而不是抖动,因为图像是像素艺术,抖动会扭曲区域的轮廓并将噪声添加到要平坦的区域.

我试过Image.Image.paste(),它使用了四种指定的颜色,但它产生了一个抖动的图像:

from PIL import Image
oldimage = Image.open("oldimage.png")
palettedata = [0, 0, 0, 102, 102, 102, 176, 176, 176, 255, 255, 255]
newimage = Image.new('P', oldimage.size)
newimage.putpalette(palettedata * 64)
newimage.paste(oldimage, (0, 0) + oldimage.size)
newimage.show()    
Run Code Online (Sandbox Code Playgroud)

我试图Image.Image.quantize()图片对类似问题的回答中提到,但它也产生了抖动:

from PIL import Image
palettedata = [0, 0, 0, 102, 102, 102, 176, 176, 176, 255, 255, 255]
palimage = Image.new('P', (16, 16))
palimage.putpalette(palettedata * 64)
oldimage = Image.open("School_scrollable1.png")
newimage = oldimage.quantize(palette=palimage)
newimage.show()
Run Code Online (Sandbox Code Playgroud)

我试过Image.Image.convert() …

python image python-imaging-library

5
推荐指数
2
解决办法
8657
查看次数

使用python PIL更改8位.png图像的调色板

我正在寻找一种快速方法将新调色板应用于现有的8位.png图像.我怎样才能做到这一点?保存图像时,.png是否重新编码?(自己回答:看来是这样)

我尝试过(编辑过):

import Image, ImagePalette
output = StringIO.StringIO()
palette = (.....) #long palette of 768 items
im = Image.open('test_palette.png') #8 bit image
im.putpalette(palette) 
im.save(output, format='PNG')
Run Code Online (Sandbox Code Playgroud)

通过我的testimage,保存功能大约需要65毫安.我的想法:没有解码和编码,它可以更快?

python image-processing python-imaging-library

4
推荐指数
1
解决办法
9730
查看次数