Compare commits
No commits in common. "main-v2" and "main" have entirely different histories.
45
main.py
45
main.py
@ -3,7 +3,7 @@ import cv2
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
|
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
|
||||||
QLabel, QPushButton, QScrollArea, QFrame, QSizePolicy,QFileDialog
|
QLabel, QPushButton, QScrollArea, QFrame, QSizePolicy
|
||||||
)
|
)
|
||||||
from PyQt5.QtCore import QTimer, Qt, pyqtSignal, QThread
|
from PyQt5.QtCore import QTimer, Qt, pyqtSignal, QThread
|
||||||
from PyQt5.QtGui import QImage, QPixmap, QFont, QPainter, QPen, QColor
|
from PyQt5.QtGui import QImage, QPixmap, QFont, QPainter, QPen, QColor
|
||||||
@ -206,12 +206,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.start_button.clicked.connect(self.start_camera)
|
self.start_button.clicked.connect(self.start_camera)
|
||||||
self.stop_button.clicked.connect(self.stop_camera)
|
self.stop_button.clicked.connect(self.stop_camera)
|
||||||
self.stop_button.setEnabled(False)
|
self.stop_button.setEnabled(False)
|
||||||
self.btn_image = QPushButton('选择图片')
|
|
||||||
self.btn_video = QPushButton('选择视频')
|
|
||||||
self.btn_image.clicked.connect(self.open_image_file)
|
|
||||||
self.btn_video.clicked.connect(self.open_video_file)
|
|
||||||
button_layout.addWidget(self.btn_image)
|
|
||||||
button_layout.addWidget(self.btn_video)
|
|
||||||
button_layout.addWidget(self.start_button)
|
button_layout.addWidget(self.start_button)
|
||||||
button_layout.addWidget(self.stop_button)
|
button_layout.addWidget(self.stop_button)
|
||||||
button_layout.addStretch()
|
button_layout.addStretch()
|
||||||
@ -431,42 +426,6 @@ class MainWindow(QMainWindow):
|
|||||||
self.camera_thread.stop_camera()
|
self.camera_thread.stop_camera()
|
||||||
event.accept()
|
event.accept()
|
||||||
|
|
||||||
def open_image_file(self):
|
|
||||||
file_path, _ = QFileDialog.getOpenFileName(self, '选择图片', '', '图片文件 (*.jpg *.png)')
|
|
||||||
if file_path:
|
|
||||||
image = cv2.imread(file_path)
|
|
||||||
self.process_image(image)
|
|
||||||
|
|
||||||
def open_video_file(self):
|
|
||||||
file_path, _ = QFileDialog.getOpenFileName(self, '选择视频', '', '视频文件 (*.mp4 *.avi)')
|
|
||||||
if file_path:
|
|
||||||
self.cap = cv2.VideoCapture(file_path)
|
|
||||||
self.video_timer = QTimer()
|
|
||||||
self.video_timer.timeout.connect(self.process_video_frame)
|
|
||||||
self.video_timer.start(30)
|
|
||||||
|
|
||||||
def process_image(self, image):
|
|
||||||
self.detections = self.detector.detect_license_plates(image)
|
|
||||||
display_image = self.draw_detections(image.copy())
|
|
||||||
self.display_static_image(display_image)
|
|
||||||
self.update_results_display()
|
|
||||||
|
|
||||||
def process_video_frame(self):
|
|
||||||
ret, frame = self.cap.read()
|
|
||||||
if ret:
|
|
||||||
self.process_image(frame)
|
|
||||||
else:
|
|
||||||
self.video_timer.stop()
|
|
||||||
self.cap.release()
|
|
||||||
|
|
||||||
def display_static_image(self, image):
|
|
||||||
rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
|
||||||
h, w, ch = rgb_image.shape
|
|
||||||
bytes_per_line = ch * w
|
|
||||||
qt_image = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888)
|
|
||||||
pixmap = QPixmap.fromImage(qt_image)
|
|
||||||
self.camera_label.setPixmap(pixmap.scaled(self.camera_label.size(), Qt.KeepAspectRatio))
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
window = MainWindow()
|
window = MainWindow()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user