Vikas01's picture
Update app.py
eb8d222
import numpy as np
import cv2
import imutils
import pytesseract
import pandas as pd
import time
import os
from PIL import Image
import streamlit as st
#
# Create a directory for storing data
if not os.path.exists("data"):
os.makedirs("data")
bytes_data = None
img_file_buffer = st.camera_input("Take a picture")
if img_file_buffer is not None:
test_image = Image.open(img_file_buffer)
st.image(test_image, use_column_width=True)
image = np.asarray(test_image)
image = imutils.resize(image, width=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 11, 17, 17)
edged = cv2.Canny(gray, 170, 200)
cnts, new = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
image1 = image.copy()
cv2.drawContours(image1, cnts, -1, (0, 255, 0), 3)
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)[:30]
screenCnt = None
image2 = image.copy()
cv2.drawContours(image2, cnts, -1, (0, 0, 255), 3)
for c in cnts:
perimeter = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.018 * perimeter, True)
if len(approx) == 4:
screenCnt = approx
x, y, w, h = cv2.boundingRect(c)
new_img = image[y:y + h, x:x + w]
break
image_with_contours = image.copy()
cv2.drawContours(image_with_contours, [screenCnt], -1, (0, 255, 0), 3)
# Display the image with contours
st.image(image_with_contours, caption="Image with detected license plate")
# Configuration for tesseract
# tesseract_path = r"D:\number_plate\tessract\tesseract.exe"
# pytesseract.pytesseract.tesseract_cmd = tesseract_path
# Run tesseract OCR on the cropped image
text = pytesseract.image_to_string(new_img, lang="eng")
# Data is stored in CSV file
raw_data = {'date': [time.asctime(time.localtime(time.time()))], 'v_number': [text]}
df = pd.DataFrame(raw_data, columns=['date', 'v_number'])
# Check if the CSV file exists
file_path = os.path.join("data", "data.csv")
if os.path.exists(file_path):
df.to_csv(file_path, mode='a', header=False, index=False) # Append to existing file
else:
df.to_csv(file_path, index=False) # Create new file
# Print some debug information
st.write("CSV File Path:", file_path)
st.write("CSV File Exists:", os.path.exists(file_path))
# Print recognized text
st.write("Recognized Text:",text)
if bytes_data is None:
st.stop()