Untitled
unknown
plain_text
2 years ago
15 kB
7
Indexable
main.py
'''
def cmd():
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Failed to open the camera")
exit()
ret, frame = cap.read()
if not ret:
print("Failed to capture frame in cmd")
exit()
if cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101040734FF'
command = binascii.unhexlify(hex_command)
ser.write(command)
video_output()
#response = ser.readline()
#print("Response: ", response)
cap.release()
cv2.destroyAllWindows()
# over_speed=overspeed()
cmd1=cmd()
'''
import binascii
import datetime
import tkinter
from tkinter import messagebox
import serial
import time
import cv2
import customtkinter
import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
global icr_var
class Speed_Hunter_Start:
def __init__(self, window):
self.icr_var = tk.BooleanVar(value=False)
self.checkbox_1_state = False
self.window = window
self.window.title("Speed Hunter III")
# configure grid layout (4x4)
self.window.grid_columnconfigure(1, weight=1)
self.window.grid_columnconfigure((2, 3), weight=0)
self.window.grid_rowconfigure((0, 1, 2), weight=1)
self.checkbox_1_state = False
self.cap = cv2.VideoCapture(0) # Replace '0' with the appropriate camera index or device ID
self.canvas = customtkinter.CTkCanvas(self.window, width=720, height=520) # use (640,480) while developing
self.canvas.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")
self.sidebar_frame = customtkinter.CTkFrame(self.window)
self.sidebar_frame.grid(row=1, column=0)
self.sidebar_button_1 = customtkinter.CTkButton(self.sidebar_frame, text="Tools",
command=self.setting_window_event)
self.sidebar_button_1.grid(row=1, column=0, padx=20, pady=10)
self.sidebar_button_2 = customtkinter.CTkButton(self.sidebar_frame, text="Auto Capture",
command=self.setting_window_event)
self.sidebar_button_2.grid(row=1, column=1, padx=20, pady=10)
self.sidebar_button_3 = customtkinter.CTkButton(self.sidebar_frame, text="Manual Capture",
command=self.setting_window_event)
self.sidebar_button_3.grid(row=1, column=2, padx=20, pady=10)
self.sidebar_button_4 = customtkinter.CTkButton(self.sidebar_frame, text="Snapshot",
command=self.snapshot)
self.sidebar_button_4.grid(row=1, column=3, padx=20, pady=10)
self.sidebar_button_5 = customtkinter.CTkButton(self.sidebar_frame, text="Maps",
command=self.open_maps)
self.sidebar_button_5.grid(row=1, column=4, padx=20, pady=10)
self.exit_button = customtkinter.CTkButton(self.sidebar_frame, fg_color="red", hover_color="green", text="Exit",
command=self.exit_app)
self.exit_button.grid(row=1, column=5, padx=20, pady=10)
# create zoom button frame
self.zoombutton_frame = customtkinter.CTkFrame(self.window)
self.zoombutton_frame.grid(row=0, column=1, sticky="nw")
self.label_zoom_group = customtkinter.CTkLabel(master=self.zoombutton_frame, text="Zoom:")
self.label_zoom_group.grid(row=0, column=0, padx=10, pady=10, sticky="n")
self.zoom_button_1 = customtkinter.CTkButton(self.zoombutton_frame, text="+")
self.zoom_button_1.grid(row=1, column=0, padx=20, pady=10)
self.zoom_button_2 = customtkinter.CTkButton(self.zoombutton_frame, text="-")
self.zoom_button_2.grid(row=2, column=0, padx=20, pady=10)
self.zoom_button_1.bind("<ButtonPress-1>", lambda event: self.zoom_in())
self.zoom_button_1.bind("<ButtonRelease-1>", lambda event: self.zoom_in_stop())
self.zoom_button_2.bind("<ButtonPress-1>", lambda event: self.zoom_out())
self.zoom_button_2.bind("<ButtonRelease-1>", lambda event: self.zoom_out_stop())
self.show_frame()
# <-------------------------Settings window code starts------------------------------------------>
def setting_window_event(self):
setting_window = tkinter.Toplevel()
setting_window.title("Tools")
#setting_window.attributes('-toolwindow', True)
setting_window.geometry(f"{640}x{480}+0+0")
setting_window.attributes('-topmost', True)
setting_window.grid_columnconfigure(0,weight=1)
setting_window.grid_rowconfigure(1,weight=1)
# create sidebar frame with widgets
sidebar_frame = customtkinter.CTkFrame(setting_window, corner_radius=0)
sidebar_frame.grid(row=0, column=0, rowspan=4, padx=(20, 20), pady=(20, 0), sticky="n")
sidebar_frame.grid_rowconfigure(4, weight=1)
logo_label = customtkinter.CTkLabel(sidebar_frame, text="Speed Hunter X",
font=customtkinter.CTkFont(size=20, weight="bold"))
logo_label.grid(row=0, column=0, padx=20, pady=(20, 10))
sidebar_button_1 = customtkinter.CTkButton(sidebar_frame, text="Add New Location")
sidebar_button_1.grid(row=1, column=0, padx=20, pady=10)
sidebar_button_2 = customtkinter.CTkButton(sidebar_frame, text="Add New Officer")
sidebar_button_2.grid(row=2, column=0, padx=20, pady=10)
sidebar_button_3 = customtkinter.CTkButton(sidebar_frame, text="Change Officer")
sidebar_button_3.grid(row=3, column=0, padx=20, pady=10)
appearance_mode_label = customtkinter.CTkLabel(sidebar_frame, text="Appearance Mode:", anchor="w")
appearance_mode_label.grid(row=5, column=0, padx=20, pady=(10, 0))
appearance_mode_optionmenu = customtkinter.CTkOptionMenu(sidebar_frame,
values=["Light", "Dark", "System"],
command=self.change_appearance_mode_event)
appearance_mode_optionmenu.grid(row=6, column=0, padx=20, pady=(10, 10))
appearance_mode_optionmenu.set("System")
focus_label = customtkinter.CTkLabel(sidebar_frame, text="Focus Mode:", anchor="w")
focus_label.grid(row=7, column=0, padx=20, pady=(10, 0))
focus_optionmenu = customtkinter.CTkOptionMenu(sidebar_frame,
values=["Auto", "Manual"],
command=self.change_focus_event)
focus_optionmenu.grid(row=8, column=0, padx=20, pady=(10, 20))
focus_optionmenu.set("Auto")
# create ICR checkbox frame
checkbox_slider_frame = customtkinter.CTkFrame(setting_window)
checkbox_slider_frame.grid(row=0, column=1, padx=(20, 20), pady=(20, 0), sticky="n")
checkbox_1 = customtkinter.CTkCheckBox(master=checkbox_slider_frame, variable=self.icr_var,
onvalue=True, offvalue=False,
text="ICR Mode On/Off", command=self.icr_mode)
checkbox_1.grid(row=0, column=0, padx=20, pady=10)
checkbox_1.select() if self.checkbox_1_state else checkbox_1.deselect()
# <---------------------Settings window code ends------------------------------------>
def open_maps(self):
latitude = 13.020480
longitude = 77.615920
url = f"https://www.google.com/maps/search/?api=1&query={latitude},{longitude}"
def snapshot(self):
if not self.cap.isOpened():
print("Failed to open the camera")
exit()
ret, frame = self.cap.read()
if not ret:
print("Failed to capture frame")
exit()
cur_date = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
file_path = f"C:/Users/msiplaccouts/PycharmProjects/camera_test/images/{cur_date}.jpg"
cv2.putText(frame, cur_date, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
cv2.imwrite(file_path, frame)
messagebox.showinfo("Speed Hunter X","Snapshot Captured!")
# <------------------------------ICR Mode Function------------------------------------>
def icr_mode(self):
self.icr_var = not self.icr_var
print(self.icr_var)
if self.icr_var:
ser = serial.Serial('COM9', 9600)
hex_command = '8101040103FF' # ICR OFF COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
self.checkbox_1_state = False
print("work in off")
else:
ser = serial.Serial('COM9', 9600)
hex_command = '8101040102FF' # ICR ON COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
time.sleep(0.6)
hex_command = '81010414030AFF' # ICR ON WITH HLC ON MAX-LEVEL = 10 COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
self.checkbox_1_state = True
print("work in on")
def change_appearance_mode_event(self, new_appearance_mode: str):
customtkinter.set_appearance_mode(new_appearance_mode)
# <------------------------------Auto/Manual Focus Function------------------------------------>
def change_focus_event(self, new_focus: str):
if new_focus == "Auto":
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101043802FF' # AUTO-FOCUS ON COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
else:
print("Unable to open camera")
else:
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101043803FF' # MANUAL-FOCUS ON COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
else:
print("Unable to open camera")
# <------------------------------Display Video Function------------------------------------>
def show_frame(self):
if not self.cap.isOpened():
print("Failed to open the camera in show_frame method")
exit()
ret, frame = self.cap.read()
if not ret:
print("Failed to capture frame")
exit()
if ret:
frame = cv2.resize(frame, (1280,720)) # (640,480)
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h,w, _ = image.shape
center_x = w // 2
center_y = h // 2
target_size = 15
cv2.rectangle(image,(center_x - target_size,center_y - target_size),
(center_x + target_size, center_y + target_size),(0,0,255),2)
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cv2.putText(image,current_time,(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(255,255,255),2)
img = ImageTk.PhotoImage(Image.fromarray(image))
self.canvas.create_image(0, 0, anchor=tk.NW, image=img)
self.canvas.image = img
self.window.after(5, self.show_frame)
# <------------------------------zoom out functions------------------------------------>
def zoom_out(self):
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101040734FF' # ZOOM OUT CONTINUOUSLY COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
def zoom_out_stop(self):
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101040734FF8101040700FF81097E7E00FF' # ZOOM OUT ONCE COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
# <------------------------------zoom in functions------------------------------------>
def zoom_in(self):
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101040724FF' # ZOOM IN CONTINUOUSLY COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
def zoom_in_stop(self):
if self.cap.isOpened():
ser = serial.Serial('COM9', 9600)
hex_command = '8101040724FF8101040700FF81097E7E00FF' # ZOOM IN ONCE COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
# <------------------------------exit gui function------------------------------------->
def exit_app(self):
ser = serial.Serial('COM9', 9600)
hex_command = '8101041903FF' # RESET CAMERA COMMAND
command = binascii.unhexlify(hex_command)
ser.write(command)
ser.close()
self.cap.release()
self.window.destroy()
window = customtkinter.CTk() # Create the Tkinter window
# screen_width = window.winfo_screenwidth()
# screen_height = window.winfo_screenheight()
window.geometry(f"{1920}x{1080}+0+0")
#window.attributes('-fullscreen',True)
customtkinter.set_appearance_mode("Dark")
customtkinter.set_default_color_theme("blue")
app = Speed_Hunter_Start(window) # Create the CameraApp object
window.mainloop() # Run the Tkinter event loop
laser.py
import struct
import serial
ser = serial.Serial('COM1', 9600)
ser.write(b'SN\r\n') # to find serial number of laser device
ser.write(b'DL2\r\n') # to set lower distance limit
ser.write(b'DH300\r\n') # to set upper distance limit
ser.write(b'SO\r\n') # to start laser device
filename = 'data.txt'
file = open(filename, 'w')
try:
while True:
data = ser.read()
decoded_data=data.decode('utf-8')
print(decoded_data,end='')
file.write(decoded_data)
file.flush()
except KeyboardInterrupt:
file.close()
ser.close()
with open("data.txt", 'r+') as fp:
lines = fp.readlines()
fp.seek(0)
fp.truncate()
fp.writelines(lines[1:])
output_list = []
with open('data.txt', 'r') as file:
for line in file:
line = line.strip()
if ':' in line:
parts = line.split(':')
print(parts)
for item in parts:
item = item.strip('\x00')
if '\x00' in item:
speed, dist =item.split('\x00')
print(speed, dist)
''' if item:
key, value = item.split('.')
output_list.append({key: value})
print(output_list)'''
'''
with open('data.txt', 'r') as file:
for line in file:
line = line.strip()
if ':' in line:
parts = line.split(':')
print(parts)
speed = parts[0].strip()'''
Editor is loading...