平均颜色有点不对。 (np.mean())
A bit wrong average color. (np.mean())
我写了一个脚本,将图像的平均颜色写入文件。但是,它returns一个位错误的值。
# coding=utf-8
from __future__ import print_function
import cv2, sys, os
import numpy as np
palette = []
if len(sys.argv) < 2:
print(u'Drag file on me.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
if not os.path.exists(sys.argv[1]):
print(u'Invalid file name.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
for file in sys.argv[1:]:
im = cv2.imread(file)
if im is None:
print(u'The specified file is corrupted or is not a picture.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
colors = np.unique(im.reshape(-1, im.shape[2]), axis=0)
color = np.flip(colors.mean(axis=0,dtype=np.float64).astype(int)).tolist()
palette.append([color,os.path.basename(file)[:-4]])
palette = np.array(palette)
palette = palette[palette[:,0].argsort(kind='mergesort')]
out = open('palette.txt','w')
out.write(str(palette.tolist()))
out.close()
示例:(image) - in Photoshop, and here,平均颜色为 [105, 99, 89],但我的脚本 returns [107,100,90]
换行
colors = np.unique(im.reshape(-1, im.shape[2]), axis=0)
到
colors = im.reshape(-1, im.shape[2])
对于平均颜色计算,如果多次使用一种颜色很重要,因此使用 np.unique
会给出不正确的结果。
您可能想要删除 unique
命令以重现 javascript 正在执行的操作。替换为
colors = im.reshape(-1, im.shape[2])
不同之处在于您对味觉进行平均(使用的每种颜色出现一次),而脚本对图像进行平均(对图像中出现的颜色进行平均)。
我写了一个脚本,将图像的平均颜色写入文件。但是,它returns一个位错误的值。
# coding=utf-8
from __future__ import print_function
import cv2, sys, os
import numpy as np
palette = []
if len(sys.argv) < 2:
print(u'Drag file on me.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
if not os.path.exists(sys.argv[1]):
print(u'Invalid file name.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
for file in sys.argv[1:]:
im = cv2.imread(file)
if im is None:
print(u'The specified file is corrupted or is not a picture.')
print(u'(Press Enter to close)',end='')
raw_input()
sys.exit()
colors = np.unique(im.reshape(-1, im.shape[2]), axis=0)
color = np.flip(colors.mean(axis=0,dtype=np.float64).astype(int)).tolist()
palette.append([color,os.path.basename(file)[:-4]])
palette = np.array(palette)
palette = palette[palette[:,0].argsort(kind='mergesort')]
out = open('palette.txt','w')
out.write(str(palette.tolist()))
out.close()
示例:(image) - in Photoshop, and here,平均颜色为 [105, 99, 89],但我的脚本 returns [107,100,90]
换行
colors = np.unique(im.reshape(-1, im.shape[2]), axis=0)
到
colors = im.reshape(-1, im.shape[2])
对于平均颜色计算,如果多次使用一种颜色很重要,因此使用 np.unique
会给出不正确的结果。
您可能想要删除 unique
命令以重现 javascript 正在执行的操作。替换为
colors = im.reshape(-1, im.shape[2])
不同之处在于您对味觉进行平均(使用的每种颜色出现一次),而脚本对图像进行平均(对图像中出现的颜色进行平均)。