CoolFace
Apppublic

DiweshUIT/Spectrometer

sourceHugging Facemitupdated 4y agoView on Hugging Face
2likes
app.py145 linesDownload Raw Back to root
1import os2os.system('pip install -e pycopy-colorsys')3from gradio.components import Label4import colorsys5import cv2 as cv6import gradio as gr7import matplotlib8import math9import matplotlib.pyplot as plt10import numpy as np11 12 13def image_mod(image):14  #plt.figure(figsize=(10,10))15  #image1 = cv.imread(r"/content/photo1.jpg")16  grey = cv.cvtColor(image, cv.COLOR_BGR2GRAY)17  #plt.imshow(grey)18  shape=(grey.shape)19  #pixelc=( grey.shape[0] * grey.shape[1])20  21  return grey22def greet(image):23  grey = cv.cvtColor(image, cv.COLOR_BGR2GRAY)24  #plt.imshow(grey)25  shape=(grey.shape)26  pixelc=( grey.shape[0] * grey.shape[1])27  return shape, pixelc28 29 30def avg(image):31  l=[]32  33#You're free to do a resize or not, just for the example34  cap = cv.resize(image, (340,480))35  for x in range (0,340,1):36    for y in range(0,480,1):37      color = cap[y,x]38      l.append(color)39        #print(color)40  n=len(l)41  l2 = [item[0] for item in l]42#print(l2)43  sumred=044#l2 = [item[1] for item in l]45  #print(l2)46  for ele in range(0, len(l2)):47    sumred = sumred + l2[ele]48  answer=sumred/n49  sumgreen=050  l3 = [item[1] for item in l]51  #print(l3)52  for ele in range(0, len(l3)):53    sumgreen = sumgreen + l3[ele]54  answer1=sumgreen/n55  sumblue=056  l4 = [item[2] for item in l]57#print(l4)58  for ele in range(0, len(l4)):59    sumblue = sumblue + l4[ele]60  answer2=sumblue/n61#print(answer2)62  newp=(answer1+answer2+answer)/363  red=answer               #red ko blue see change64  green=answer265  blue=answer166  #rgb_to_name((0, 0, 0))67  fig=plt.figure()68  plt.imshow([[(math.ceil(red), math.ceil(blue), math.ceil(green))]])69  #plt.show()70  return plt71def wave(image):72  l=[]73  74#You're free to do a resize or not, just for the example75  cap = cv.resize(image, (340,480))76  for x in range (0,340,1):77    for y in range(0,480,1):78      color = cap[y,x]79      l.append(color)80        #print(color)81  n=len(l)82  l2 = [item[0] for item in l]83#print(l2)84  sumred=085#l2 = [item[1] for item in l]86  #print(l2)87  for ele in range(0, len(l2)):88    sumred = sumred + l2[ele]89  answer=sumred/n90  sumgreen=091  l3 = [item[1] for item in l]92  #print(l3)93  for ele in range(0, len(l3)):94    sumgreen = sumgreen + l3[ele]95  answer1=sumgreen/n96  sumblue=097  l4 = [item[2] for item in l]98#print(l4)99  for ele in range(0, len(l4)):100    sumblue = sumblue + l4[ele]101  answer2=sumblue/n102#print(answer2)103  newp=(answer1+answer2+answer)/3104  a1=math.ceil(answer)105  a2=math.ceil(answer1)106  a3=math.ceil(answer2)107  108  109    #rgb normal: range (0-255, 0-255, 0.255)110  blue=answer2              #red ko blue see change111  green=answer1112  red=answer               #red ko blue see change113  #rgb normal: range (0-255, 0-255, 0.255)   114    #get rgb percentage: range (0-1, 0-1, 0-1 )115  red_percentage= red / float(255)116  green_percentage= green/ float(255)    117  blue_percentage=blue / float(255)118 119    120    #get hsv percentage: range (0-1, 0-1, 0-1)121  color_hsv_percentage=colorsys.rgb_to_hsv(red_percentage, green_percentage, blue_percentage) 122    #print('color_hsv_percentage: ', color_hsv_percentage)123 124    125    126    #get normal hsv: range (0-360, 0-255, 0-255)127  color_h=round(360*color_hsv_percentage[0])128  color_s=round(255*color_hsv_percentage[1])129  color_v=round(255*color_hsv_percentage[2])130    131  color_hsv=[color_h, color_s, color_h]132  l= 650 - 250 / 270 *color_h 133    #print('color_hsv: ', color_hsv)134  return l135    136    137    138demo4=gr.Interface(wave,gr.Image(label="Select your Image"),outputs=[gr.outputs.Textbox(label="Wave Length in nm (Nanometre)")],title="Nature of Wave Length Emitted")139#demo5=gr.Interface(avg,gr.Image(label="Average Color seen by Cameraman"),outputs="text",title="Color Analysis")140output3 = gr.Plot()141demo1 = gr.Interface(image_mod, gr.Image(label="UPLOAD YOUR IMAGE HERE",shape=(2000, 2000)),"image",title="Spectrometer")142demo3=gr.Interface(avg,gr.Image(label="Average Color seen by the camera"),outputs=[gr.Plot(label="Matplotlib Plot")],title="Expected Color Seen by Camera")143demo2 = gr.Interface(greet,gr.Image(label="UPLOAD YOUR IMAGE HERE"),outputs="text",title="Dimension and No.of Pixels")144demo = gr.TabbedInterface([demo1,demo2,demo3,demo4])145demo.launch()