import numpy as np
from pyzbar.pyzbar import decode
import tkinter.messagebox as msgbox
import tkinter as tk
cap = cv2.VideoCapture(0)
root = tk.Tk()
root.title("QR_CODE")
decoded_label_widget = tk.Label(root, text="")
decoded_label_widget.grid(row=0, column=0)
decoded_entry_widget = tk.Entry(root, state="readonly", font=("Arial", 12), width=60, highlightthickness=0, bd=0)
decoded_entry_widget.grid(row=0, column=1, pady=10)
flag_camera = True
def toggle_display():
global flag_camera
flag_camera = not flag_camera
toggle_button = tk.Button(root, text="Bật-Tắt-Cam", command=toggle_display)
toggle_button.grid(row=0, column=2, padx=10)
def copy_all():
root.clipboard_clear()
root.clipboard_append(decoded_entry_widget.get())
copy_button = tk.Button(root, text="Sao Chép", command=copy_all)
copy_button.grid(row=0, column=3, padx=10)
if not cap.isOpened():
msgbox.showwarning("Cảnh báo", "Không thể mở camera. Vui lòng kiểm tra lại!")
flag_camera = False
while True:
if flag_camera:
_, frame = cap.read()
frame = cv2.resize(frame, None, fx=1.3, fy=1.3, interpolation=cv2.INTER_LINEAR)
frame = cv2.convertScaleAbs(frame, alpha=3, beta=20)
decodedObjects = decode(frame)
decoded_data = [obj.data.decode("utf-8") for obj in decodedObjects]
for obj in decodedObjects:
x, y, w, h = obj.rect.left, obj.rect.top, obj.rect.width, obj.rect.height
cx, cy = x + w/2, y + h/2
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.line(frame, (int(cx), y), (int(cx), y + h), (0, 255, 0), 2)
cv2.line(frame, (x, int(cy)), (x + w, int(cy)), (0, 255, 0), 2)
if len(decoded_data) > 0:
decoded_text = "n".join(decoded_data)
decoded_entry_widget.delete(0, tk.END)
decoded_entry_widget.insert(tk.END, decoded_text)
decoded_entry_widget.configure(state="normal")
decoded_label_widget.configure(text="")
else:
decoded_label_widget.configure(text="")
cv2.imshow("QR Code Scanner", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if cv2.getWindowProperty("QR Code Scanner", cv2.WND_PROP_VISIBLE) < 1:
break
else:
decoded_entry_widget.configure(state="normal")
decoded_label_widget.configure(text="")
cv2.destroyAllWindows()
root.update()
root.update()
cap.release()
cv2.destroyAllWindows()
Mình có đoạn code scan mã qr trên CCCD nhưng hiện tại đọc nó rất lâu tầm, mình cũng đã kết nối vơi cam iphone bằng ivcam cũng vậy, Nhờ mọi người xem giúp chỉnh ở đâu ạ
Mình cảm ơn