0% found this document useful (0 votes)
10 views10 pages

Final Project

The document outlines a Flower Classification and Information System that integrates a GUI, machine learning model, and MySQL database. Users can upload flower images for classification using a pre-trained VGG16 model, with results displayed through the GUI and detailed information retrieved from the database. Future enhancements may include GUI improvements, advanced ML models, and expanded flower class data.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views10 pages

Final Project

The document outlines a Flower Classification and Information System that integrates a GUI, machine learning model, and MySQL database. Users can upload flower images for classification using a pre-trained VGG16 model, with results displayed through the GUI and detailed information retrieved from the database. Future enhancements may include GUI improvements, advanced ML models, and expanded flower class data.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

About Project

 The project is a Flower Classification and Information System


that combines a Graphical User Interface (GUI), a machine
learning model, and MySQL database integration.

 The GUI, developed using Tkinter, allows users to upload


flower images for classification. The machine learning model,
a pre-trained Convolutional Neural Network (VGG16) with
TensorFlow and Keras, processes and classifies the images. The
MySQL database, named “flowers”, stores and retrieves
information about different flower classes.

 The workflow involves the user uploading an image, the ML


model predicting the flower class, and the GUI displaying
detailed information about the predicted flower class
retrieved from the MySQL database.

 The project aims to provide users with an interactive platform


to classify flower images and obtain detailed information
about the predicted flower class. Potential extensions include
GUI enhancements, integration of more advanced ML models,
and expansion of the database to include additional flower
classes and information.

1
List Of Libraries

Name Uses

Tkinter GUI Library for Python.


Python Imaging Library, used for
PIL(Pillow) opening, manipulating, and saving
many different image file formats.

An open-source machine learning


TensorFlow library.

A high-level neural networks API,


Keras running on top of Tensorflow.

mysql-connector A MySQL driver for python

2
List Of Functions And Classes

Name Library Use


Displays information about a predicted class,
‘infor()’ function Tkinter including its definition, regions, and medical
advantages.

Destroys the main canvas. Calls the


‘information()’ function Tkinter
infor function.

Loads an image file using file dialog. Performs


‘next_page()’ function Tkinter predictions using a pre-trained model.
Updates the GUI accordingly.

‘Tk’ class Tkinter The main application window.


Used for drawing shapes and displaying
‘Canvas’ class Tkinter
elements in the GUI.
‘Label’ class Tkinter Displays text or images.

‘Button’ class Tkinter Creates buttons for user interaction.

‘Image’ class PIL(pillow) Represents an image.

‘ImageTk’ class PIL(pillow) Used for displaying images in Tkinter.


Linear stack of layers for building neural
‘Sequential’ class Keras
network models.
‘Flatten’ class Keras Flattens the input.
Fully connected layer in a neural network.
‘Dense’ class Keras

Used for connecting to a MySQL database.


‘[Link]’ class MySQL

3
GUI Code

from tkinter import *

from tkinter import filedialog

from PIL import Image, ImageTk

import tensorflow as tf

from tensorflow import keras

import [Link] as don

mydb=[Link](host="localhost",user="root",password="Mouse@2010",database="flowers")

cur=[Link]()

bredth=600

high=600

root=Tk()

[Link](f"{bredth}x{high}")

[Link](bredth,high)

[Link](bredth,high)

#########################################################################################

# information page

#########################################################################################

def infor():

in_canvas=Canvas(root,width=bredth,height=high,bg="#f2eadf")

in_canvas.pack()

heading=Label(in_canvas,text=predicted_class_label.swapcase(),fg="black",bg="#f2eadf",font=("helvatica",
30,"bold"),underline=30)

in_canvas.create_window(300,30,window=heading)

[Link](f"select * from {predicted_class_label}")

data=[Link]()

intro=data[0][0]

4
region1=data[0][1]

region2=data[0][2]

region3=data[0][3]

region4=data[0][4]

region5=data[0][5]

imp1=data[0][6]

imp2=data[0][7]

imp3=data[0][8]

definations=Label(in_canvas,text="DEFINITION",font=("helvetica", 20, "bold"),bg="#f2eadf",fg="black")

in_canvas.create_window(300,100,window=definations)

define=Label(in_canvas,text=f"# {intro}",font=("helvetica", 10),anchor=W,wraplength=600,


justify=LEFT,bg="#f2eadf",fg="black")

in_canvas.create_window(300,150,window=define)

regions=Label(in_canvas,text="REGIONS",font=("helvetica", 20, "bold"),bg="#f2eadf",fg="black")

in_canvas.create_window(300,250,window=regions)

reg1=Label(in_canvas,text=f"# {region1}",anchor=W,font=("helvetica", 10),bg="#f2eadf", justify=LEFT,fg="black")

in_canvas.create_window(20,280,window=reg1,anchor=W)

reg2=Label(in_canvas,text=f"# {region2}",anchor=W,font=("helvetica", 10),bg="#f2eadf", justify=LEFT,fg="black")

in_canvas.create_window(20,300,window=reg2,anchor=W)

reg3=Label(in_canvas,text=f"# {region3}",anchor=W,font=("helvetica", 10),bg="#f2eadf", justify=LEFT,fg="black")

in_canvas.create_window(20,320,window=reg3,anchor=W)

reg4=Label(in_canvas,text=f"# {region4}",anchor=W,font=("helvetica", 10),bg="#f2eadf", justify=LEFT,fg="black")

in_canvas.create_window(20,340,window=reg4,anchor=W)

reg5=Label(in_canvas,text=f"# {region5}",anchor=W,font=("helvetica", 10),bg="#f2eadf", justify=LEFT,fg="black")

in_canvas.create_window(20,360,window=reg5,anchor=W)

med_perspective=Label(in_canvas,text="MEDICAL ADVANTAGES",font=("helvetica", 20,


"bold"),bg="#f2eadf",fg="black",underline=30)

in_canvas.create_window(300,400,window=med_perspective)

med1=Label(in_canvas,text=f"# {imp1}",font=("helvetica", 10),wraplength=550,


justify=LEFT,bg="#f2eadf",fg="black")

in_canvas.create_window(20,450,window=med1,anchor=W)

5
med2=Label(in_canvas,text=f"# {imp2}",font=("helvetica", 10),wraplength=550,
justify=LEFT,bg="#f2eadf",fg="black")

in_canvas.create_window(20,500,window=med2,anchor=W)

med3=Label(in_canvas,text=f"# {imp3}",font=("helvetica", 10),wraplength=550,


justify=LEFT,bg="#f2eadf",fg="black")

in_canvas.create_window(20,550,window=med3,anchor=W)

#########################################################################################

# after uploading

#########################################################################################

def next_page():

def information():

main_canvas.destroy()

infor()

global predicted_class_label

global up_image

filename = [Link](initialdir="/", title="Select file", filetypes=(("Image files",


"*.png;*.gif;*.ppm;*.pgm"), ("all files", "*.*")))

img=[Link](filename)

resized__img = [Link]((200, 200), [Link])

up_image=[Link](resized__img)

[Link](image=up_image,width=200,height=200,borderwidth=0)

loaded_model = [Link].load_model('flower_classification_model.h5')

img = [Link].load_img(filename, target_size=(150, 150))

img_array = [Link].img_to_array(img)

img_array = img_array / 255.0 # Normalize the image

img_array = tf.expand_dims(img_array, 0)

predictions = loaded_model.predict(img_array)

predicted_class_index = [Link](predictions[0]).numpy()

class_labels = ['astilbe', 'bellflower', 'black_eyed_susan', 'calendula', 'california_poppy', 'carnation',


'common_daisy', 'coreopsis', 'daffodil', 'dandelion', 'iris', 'magnolia', 'rose', 'sunflower', 'tulip', 'water_lily']

6
predicted_class_label = class_labels[predicted_class_index]

b2=Button(main_canvas,text="->",width=3,height=1,command=information)

main_canvas.create_window(550,300,window=b2)

[Link](text=predicted_class_label.swapcase(),bg="#f2eadf",font=("itallic", 30 ,"bold"),fg="#475a63")

############################################################################################

#main page design

############################################################################################

main_canvas=Canvas(root,width=bredth,height=high, bg="light green")

main_canvas.pack()

upload_im=[Link]("[Link]")

resized_upload_image = upload_im.resize((150, 100), [Link])

upload_img=[Link](resized_upload_image)

back=[Link]("[Link]")

resized_back_image = [Link]((600, 600), [Link])

backimg=[Link](resized_back_image)

main_canvas.create_image(300,300,image=backimg)

main_label=Label(main_canvas,text="BOTANICAL SEARCH", font=("itallic",20, "bold"),fg="#475a63",bg="#f2eadf")

main_canvas.create_window(300,150,window=main_label)

b1=Button(main_canvas,image=upload_img,width=150,height=100,command=next_page,borderwidth=10)

main_canvas.create_window(300,300,window=b1)

l1 = Label(main_canvas, text="Upload your image", bg="#f2eadf",fg="#475a63", font=("cursive", 20))

main_canvas.create_window(300,450,window=l1)

[Link]()

7
Machine Learning Code
import tensorflow from tensorflow

import keras from keras

import Sequential from [Link]

import Dense,Flatten

from [Link].vgg16 import VGG16

conv_base = VGG16(weights='imagenet', include_top = False, input_shape=(150, 150, 3))

model = Sequential()

[Link](conv_base) [Link](Flatten())

[Link](Dense(256,activation='relu'))

[Link](Dense(16,activation='softmax'))

conv_base.trainable = False

train_ds = [Link].image_dataset_from_directory(directory = '/content/flowers', labels='inferred', label_mode =


'categorical',batch_size=32, image_size=(150,150))

def process(image,label): image = [Link](image/255. ,tensorflow.float32) return image,label

train_ds = train_ds.map(process) [Link](optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])


history = [Link](train_ds,epochs=10)

[Link]('flower_classification_model.h5')

8
MySQL Code
import [Link] as don

try:

mydb = [Link](host="localhost", user="root", password="Mouse@2010", database="flowers") cur =


[Link]()

lst = ['astilbe', 'bellflower', 'black_eyed_susan', 'calendula', 'california_poppy', 'carnation', 'common_daisy',


'coreopsis', 'daffodil', 'dandelion', 'iris', 'magnolia', 'rose', 'sunflower', 'tulip', 'water_lily']

for i in lst:

intro = input(f"Introduction for {i}: ")

state1 = input("State 1: ")

state2 = input("State 2: ")

state3 = input("State 3: ")

state4 = input("State 4: ")

state5 = input("State 5: ")

imp1 = input("Important point 1: ")

imp2 = input("Important point 2: ")

imp3 = input("Important point 3: ")

query = f"INSERT INTO {i} (intro, region1, region2, region3, region4, region5, imp1, imp2, imp3) VALUES
(%s, %s, %s, %s, %s, %s, %s, %s, %s)"

values = (intro, state1, state2, state3, state4, state5, imp1, imp2, imp3)

[Link](query, values)

# Commit the changes to the database

[Link]()

except [Link] as e:

print(f"Error: {e}")

finally:

# Close the cursor and database connection

if 'cur' in locals() and cur:

[Link]()

if 'mydb' in locals() and mydb:

[Link]()

9
Output

10

You might also like