Pallete Gclass Code

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

Google Classroom

Classroom
ITEC 15 (Image Processing)
BSIT 2B (2nd Semester 2023-2024/T 8-9 TH 8-12am)
Home
Calendar
Enrolled
To-do
I
ITEC 15 (Image Processing)
BSIT 2B (2nd Semester 2023-2024/T 8-9 TH 8-12am)
A
ART APPRECIATION
BSIT 2B
B
BSIT 2B (Purposive Communication)
1:00- 2:30 PM TTh
B
BSIT 2B-Information Management
I
IPT-BSIT-2B-1st-2023-2024
BSIT-2B
B
BSIT 2B-GEED29
Archived classes
Settings
Laboratory Exercise No. 5: Color Detector/Extractor using a Lookup Table (Pallete)
Laboratory Exercise No. 5: Color Detector/Extractor using a Lookup Table (Pallete)
Geraldin Dela Cruz

Apr 1
100 points
This is an example of a 'look up table' concept. Using a separate file to
identify/interepret a pixel data into a 'readable' color format. The code uses the
pandas library to refer to a separate file (csv format). For this exercise, run the
code, study and analyze. Iamge file and the 'lookup' color file is included.

import cv2
import numpy as np
import pandas as pd

#Reading the image with opencv


img = cv2.imread('colorpic.jpg')

#declaring global variables (are used later on)


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

cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_function)

cv2.imshow("image",img)

#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)

#Break the loop when user hits 'esc' key


if cv2.waitKey(20) & 0xFF ==27:
break

cv2.destroyAllWindows()

Requirement:

Improve/enhance the code so that when the mouse is clicked on a specific pixel in
the image, it displays the binary equivalent of the RGB number. You may include
other data to be displayed for additional points. Turn-in the improved working code
and the screenshot of your output.

colorpic.py
Text

colors.csv
Comma Separated Values
Class comments
Your work
Assigned
Private comments
# This is a sample Python script.

# Press Shift+F10 to execute it or replace it with your code.


# Press Double Shift to search everywhere for classes, files, tool windows,
actions, and settings.

def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')

# See PyCharm help at https://www.jetbrains.com/help/pycharm/


import cv2
import numpy as np
import pandas as pd

#Reading the image with opencv


img = cv2.imread('autum.jpg')

#declaring global variables (are used later on)


#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):
# 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('image')
#cv2.setMouseCallback('image',draw_function)

#while(1):
cv2.imshow("image",img)
# if (clicked):
cv2.rectangle(img,(20,20), (750,60), (b,g,r), -1) #cv2.rectangle(image,
startpoint, endpoint, color, thickness)-1 fills entire rectangle
#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

#Break the loop when user hits 'esc' key


if cv2.waitKey(20) & 0xFF ==27:
break

cv2.destroyAllWindows()
colorpic.py
Displaying colors.csv.

You might also like