(Linux) 确定图像中不同颜色的百分比
(Linux) Determine Percentage of Different Colors in Image
如何使用 Linux 计算图像中 RGB 值的百分比?
我做了一些研究,看来 C# 和 Python 可能是可行的方法。
以下是查找图像中所有像素的 RGB 值的方法。你如何确定某事是否 red/green/whatever 你需要自己弄清楚。
from PIL import Image
im = Image.open("my_image.jpg")
pix = im.load()
(width, height) =im.size #Get the width and hight of the image for iterating over
for x in range(width):
for y in range(height):
print pix[x,y] #Get the RGBA Value of the a pixel of an image
让 ImageMagick
为您生成一个直方图,显示每种颜色有多少像素,因此,假设您有一个名为 image.jpg
或 image.png
的图像,如下所示:
然后你会在 Terminal/Command Prompt/shell:
convert image.jpg -colorspace RGB -format %c histogram:info:- | sort -nr
这将为您提供每种颜色在图像中出现频率的列表
200614: (255,255,255) #FFFFFF rgb(255,255,255)
4758: (253,253,218) #FDFDDA rgb(253,253,218)
4312: (250,250,229) #FAFAE5 rgb(250,250,229)
1821: (235,237,242) #EBEDF2 rgb(235,237,242)
1776: (212,214,226) #D4D6E2 rgb(212,214,226)
1739: (188,190,216) #BCBED8 rgb(188,190,216)
1372: ( 8, 9, 58) #08093A rgb(8,9,58)
1330: ( 6, 6, 38) #060626 rgb(6,6,38)
1327: (231,231,226) #E7E7E2 rgb(231,231,226)
1265: (194,196,218) #C2C4DA rgb(194,196,218)
1244: ( 9, 10, 65) #090A41 rgb(9,10,65)
1164: (200,202,224) #C8CAE0 rgb(200,202,224)
1132: ( 6, 7, 44) #06072C rgb(6,7,44)
1074: ( 14, 16,115) #0E1073 rgb(14,16,115)
1050: ( 4, 5, 27) #04051B rgb(4,5,27)
1048: ( 11, 13, 91) #0B0D5B rgb(11,13,91)
我已经对其进行了排序,所以最常见的颜色列在最前面 - 例如,您可以看到有 200,614 个白色像素。
要计算百分比,您需要图像中的总像素数,因此运行这个:
identify image.jpg
image.jpg JPEG GIF 480x640 480x640+0+0 8-bit sRGB 256c 99.7KB 0.000u 0:00.000
因此图像中有 480x640 像素,或总共 307,200。我会让你去计算这意味着 65.3% 是白人:-)
如何使用 Linux 计算图像中 RGB 值的百分比?
我做了一些研究,看来 C# 和 Python 可能是可行的方法。
以下是查找图像中所有像素的 RGB 值的方法。你如何确定某事是否 red/green/whatever 你需要自己弄清楚。
from PIL import Image
im = Image.open("my_image.jpg")
pix = im.load()
(width, height) =im.size #Get the width and hight of the image for iterating over
for x in range(width):
for y in range(height):
print pix[x,y] #Get the RGBA Value of the a pixel of an image
让 ImageMagick
为您生成一个直方图,显示每种颜色有多少像素,因此,假设您有一个名为 image.jpg
或 image.png
的图像,如下所示:
然后你会在 Terminal/Command Prompt/shell:
convert image.jpg -colorspace RGB -format %c histogram:info:- | sort -nr
这将为您提供每种颜色在图像中出现频率的列表
200614: (255,255,255) #FFFFFF rgb(255,255,255)
4758: (253,253,218) #FDFDDA rgb(253,253,218)
4312: (250,250,229) #FAFAE5 rgb(250,250,229)
1821: (235,237,242) #EBEDF2 rgb(235,237,242)
1776: (212,214,226) #D4D6E2 rgb(212,214,226)
1739: (188,190,216) #BCBED8 rgb(188,190,216)
1372: ( 8, 9, 58) #08093A rgb(8,9,58)
1330: ( 6, 6, 38) #060626 rgb(6,6,38)
1327: (231,231,226) #E7E7E2 rgb(231,231,226)
1265: (194,196,218) #C2C4DA rgb(194,196,218)
1244: ( 9, 10, 65) #090A41 rgb(9,10,65)
1164: (200,202,224) #C8CAE0 rgb(200,202,224)
1132: ( 6, 7, 44) #06072C rgb(6,7,44)
1074: ( 14, 16,115) #0E1073 rgb(14,16,115)
1050: ( 4, 5, 27) #04051B rgb(4,5,27)
1048: ( 11, 13, 91) #0B0D5B rgb(11,13,91)
我已经对其进行了排序,所以最常见的颜色列在最前面 - 例如,您可以看到有 200,614 个白色像素。
要计算百分比,您需要图像中的总像素数,因此运行这个:
identify image.jpg
image.jpg JPEG GIF 480x640 480x640+0+0 8-bit sRGB 256c 99.7KB 0.000u 0:00.000
因此图像中有 480x640 像素,或总共 307,200。我会让你去计算这意味着 65.3% 是白人:-)