【发布时间】:2019-09-19 17:28:24
【问题描述】:
我正在尝试使用 python opencv 制作颜色检测系统,这是我迄今为止所做的。我还是python的新手,所以请帮助我,谢谢
基本上应该发生的是,当用户打开此应用程序时,相机会打开,当他单击窗口上的任何位置时,它会告诉颜色的名称
from tkinter import *
from tkinter import ttk
import cv2
import numpy as np
import webcolors
def click_event(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
blue = cap[y, x, 0]
green = cap[y, x, 1]
red = cap[y, x, 2]
font = cv2.FONT_HERSHEY_SIMPLEX
#colourcode = str(blue) + ", " + str(green) + ", " + str(red)
colourcode2 = (red, green, blue)
cv2.imshow('frame', frame)
def closest_colour(requested_colour):
min_colours = {}
for key, name in webcolors.css3_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_colour[0]) ** 2
gd = (g_c - requested_colour[1]) ** 2
bd = (b_c - requested_colour[2]) ** 2
min_colours[(rd + gd + bd)] = name
return min_colours[min(min_colours.keys())]
def get_colour_name(requested_colour):
try:
closest_name = actual_name = webcolors.rgb_to_name(requested_colour)
except ValueError:
closest_name = closest_colour(requested_colour)
actual_name = None
return actual_name, closest_name
#print(colourcode2)
requested_colour = colourcode2
actual_name, closest_name = get_colour_name(requested_colour)
#print("colour name:", closest_name)
cv2.putText(img, closest_name, (0, 50), font, 1, 255, 2)
cap = cv2.VideoCapture(0);
while True:
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(40) == 27:
break
cv2.waitKey(0)
cv2.destroyAllWindows()
【问题讨论】:
-
有什么问题?始终将完整的错误消息(从“Traceback”一词开始)作为文本(不是屏幕截图)提出问题(不是评论)。还有其他有用的信息。
标签: python opencv colors detection