-
Notifications
You must be signed in to change notification settings - Fork 304
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cf09a30
commit 8f27e82
Showing
10 changed files
with
954 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
import cv2 | ||
import pandas as pd | ||
|
||
# -------------------------------------------------------------------------- | ||
|
||
img_path = 'pic1.jpg' | ||
csv_path = 'colors.csv' | ||
|
||
# reading csv file | ||
index = ['color', 'color_name', 'hex', 'R', 'G', 'B'] | ||
df = pd.read_csv(csv_path, names=index, header=None) | ||
|
||
# reading image | ||
img = cv2.imread(img_path) | ||
img = cv2.resize(img, (800,600)) | ||
|
||
#declaring global variables | ||
clicked = False | ||
r = g = b = xpos = ypos = 0 | ||
|
||
#function to calculate minimum distance from all colors and get the most matching color | ||
def get_color_name(R,G,B): | ||
minimum = 1000 | ||
for i in range(len(df)): | ||
d = abs(R - int(df.loc[i,'R'])) + abs(G - int(df.loc[i,'G'])) + abs(B - int(df.loc[i,'B'])) | ||
if d <= minimum: | ||
minimum = d | ||
cname = df.loc[i, 'color_name'] | ||
|
||
return cname | ||
|
||
#function to get x,y coordinates of mouse double click | ||
def draw_function(event, x, y, flags, params): | ||
if event == cv2.EVENT_LBUTTONDBLCLK: | ||
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) | ||
|
||
# creating window | ||
cv2.namedWindow('image') | ||
cv2.setMouseCallback('image', draw_function) | ||
|
||
while True: | ||
cv2.imshow('image', img) | ||
if clicked: | ||
#cv2.rectangle(image, startpoint, endpoint, color, thickness)-1 fills entire rectangle | ||
cv2.rectangle(img, (20,20), (600,60), (b,g,r), -1) | ||
|
||
#Creating text string to display( Color name and RGB values ) | ||
text = get_color_name(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) | ||
|
||
if cv2.waitKey(20) & 0xFF == 27: | ||
break | ||
|
||
cv2.destroyAllWindows() |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Colour Identification using Machine Learning | ||
|
||
A very common task in Computer Vision is based on identifying colours. | ||
More generally, a fascinating aspect of learning is that sometimes we know things but we can’t explain them. | ||
For example, if I ask you to describe me the “red colour” your only option is to show me a red object, but you can’t really explain what “red” is. | ||
For this reason a certain effort is necessary to transmit the definition of a colour to a computer. | ||
|
||
**DATASET** | ||
https://www.kaggle.com/adityabhndari/color-detection-data-set | ||
|
||
**WHAT I HAD DONE** | ||
I have used OpenCV and Pandas library to choose a point on any particular image and calculate the RGB of that point and match it with the nearest colour in the dataset to predict the colour. | ||
|
||
**LIBRARIES NEEDED** | ||
OpenCV and Pandas | ||
|
||
Original Pic: | ||
|
||
![pic1](https://user-images.githubusercontent.com/58680590/122101277-ba584b00-ce31-11eb-9a98-36e83a1a4e45.jpg) | ||
|
||
Result: | ||
|
||
![result3](https://user-images.githubusercontent.com/58680590/122101306-c17f5900-ce31-11eb-8fd9-780ee00f764a.png) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.