1 回答

TA貢獻1862條經驗 獲得超6個贊
您正在運行一個循環(huán)來創(chuàng)建一個列表,但您真的只想要 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
添加回答
舉報