1 回答

TA贡献1862条经验 获得超6个赞
您正在运行一个循环来创建一个列表,但您真的只想要 for :jcolour_hexcolour_hexj
替换此:
colour_hex = [f"#{a:02x}{b:02x}{c:02}" for a,b,c in j]
有了这个:
colour_hex = "#{:02x}{:02x}{:02}".format(*j)
如果你不需要其他任何东西,并期望许多不同的颜色,我更喜欢这个更短,也许更Pythonic的解决方案:bgr_img
from cv2
from collections import defaultdict
rgb_img = cv2.cvtColor(cv2.imread(img_input), cv2.COLOR_BGR2RGB)
palette = defaultdict(int)
for i in rgb_img:
for j in i:
palette["#{:02x}{:02x}{:02x}".format(*j)] += 1
另一方面,如果您不需要rgb_img,您也可以直接使用bgr_img,防止调用:cvtColor
from cv2
from collections import defaultdict
bgr_img = cv2.imread(img_input)
palette = defaultdict(int)
for i in bgr_img :
for j in i:
palette["#{2:02x}{1:02x}{0:02x}".format(*j)] += 1
添加回答
举报