gpt4 book ai didi

python - 如何将图像的所有像素值转换到一定范围-python

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:39 25 4
gpt4 key购买 nike

我有一个具有 12 种不同颜色的 rgb 图像,但我事先不知道颜色(像素值)。我想转换 0 到 11 之间的所有像素值,每个像素值代表原始 rgb 图像的独特颜色。

例如所有 [230,100,140] 转换为 [0,0,0] ,所有 [130,90,100] 转换为 [0,0,1] 等等......所有 [210,80,50] 转换为 [0,0, 11].

最佳答案

快速而肮脏的应用程序。很多地方都可以改进,尤其是逐个像素地遍历整个图像不是很 numpy 也不是很 opencv,但我懒得记住到底如何阈值和替换 RGB 像素。

import cv2
import numpy as np

#finding unique rows
#comes from this answer : http://stackoverflow.com/questions/8560440/removing-duplicate-columns-and-rows-from-a-numpy-2d-array
def unique_rows(a):
a = np.ascontiguousarray(a)
unique_a = np.unique(a.view([('', a.dtype)]*a.shape[1]))
return unique_a.view(a.dtype).reshape((unique_a.shape[0], a.shape[1]))

img=cv2.imread(your_image)

#listing all pixels
pixels=[]
for p in img:
for k in p:
pixels.append(k)

#finding all different colors
colors=unique_rows(pixels)

#comparing each color to every pixel
res=np.zeros(img.shape)
cpt=0
for color in colors:
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if (img[i,j,:]==color).all(): #if pixel is this color
res[i,j,:]=[0,0,cpt] #set the pixel to [0,0,counter]
cpt+=1

关于python - 如何将图像的所有像素值转换到一定范围-python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com