Created
February 1, 2023 10:21
-
-
Save zidniryi/18b1f8cabe1832c2f1bf202f4415a571 to your computer and use it in GitHub Desktop.
color konsep koding open cv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Uncomment and run this code if you not installing yet | |
# !pip install opencv-python | |
import cv2 | |
import numpy as np | |
import pandas as pd | |
img_path = "/Users/admin/Project/ml_project/colordetection/ikan-hiu.png" | |
img = cv2.imread(img_path) | |
img=cv2.resize(img,(700,500)) | |
clicked = False | |
r = g = b = xpos = ypos = 0 | |
#Reading csv file with pandas and giving names to each column | |
index=["color","color_name","hex","R","G","B"] | |
csv = pd.read_csv('colors.csv', names=index, header=None) | |
#function to calculate minimum distance from all colors and get the most matching color | |
def getColorName(R,G,B): | |
minimum = 10000 | |
for i in range(len(csv)): | |
d = abs(R- int(csv.loc[i,"R"])) + abs(G- int(csv.loc[i,"G"]))+ abs(B- int(csv.loc[i,"B"])) | |
if(d<=minimum): | |
minimum = d | |
cname = csv.loc[i,"color_name"] | |
return cname | |
#function to get x,y coordinates of mouse double click | |
def draw_function(event, x,y,flags,param): | |
print(event) | |
if event == cv2.EVENT_LBUTTONDOWN: | |
global b,g,r,xpos,ypos, clicked | |
clicked = True | |
xpos = x | |
ypos = y | |
b,g,r = img[y,x] | |
b = int(b) | |
g = int(g) | |
r = int(r) | |
cv2.namedWindow('color detection') | |
cv2.setMouseCallback('color detection',draw_function) | |
while(1): | |
cv2.imshow("color detection",img) | |
if (clicked): | |
#cv2.rectangle(image, startpoint, endpoint, color, thickness)-1 fills entire rectangle | |
cv2.rectangle(img,(20,20), (750,60), (b,g,r), -1) | |
#Creating text string to display( Color name and RGB values ) | |
text = getColorName(r,g,b) + ' R='+ str(r) + ' G='+ str(g) + ' B='+ str(b) | |
#cv2.putText(img,text,start,font(0-7),fontScale,color,thickness,lineType ) | |
cv2.putText(img, text,(50,50),2,0.8,(255,255,255),2,cv2.LINE_AA) | |
#For very light colours we will display text in black colour | |
if(r+g+b>=600): | |
cv2.putText(img, text,(50,50),2,0.8,(0,0,0),2,cv2.LINE_AA) | |
clicked=False | |
if cv2.waitKey(20) & 0xFF ==27: | |
break | |
cv2.destroyAllWindows() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment