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