LBLong commited on
Commit
15bcfb3
·
verified ·
1 Parent(s): bc79006

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +79 -2
app.py CHANGED
@@ -1,4 +1,81 @@
1
  import streamlit as st
 
 
 
 
 
2
 
3
- x = st.slider('Select a value', 0, 100)
4
- st.write(x, 'squared is', x * x)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ import sys
3
+ from PyQt5.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QHBoxLayout, QWidget, QGridLayout, QFileDialog
4
+ from PyQt5.QtGui import QPixmap, QImage
5
+ from PyQt5.QtCore import QTimer
6
+ import cv2
7
 
8
+ class MainWindow(QWidget):
9
+ def __init__(self):
10
+ super().__init__()
11
+
12
+ # Tạo layout chính
13
+ main_layout = QHBoxLayout()
14
+
15
+ # Layout bên trái - Hiển thị video
16
+ self.video_label = QLabel("Video Stream")
17
+ self.video_label.setFixedSize(640, 480)
18
+
19
+ left_layout = QVBoxLayout()
20
+ left_layout.addWidget(self.video_label)
21
+
22
+ # Layout bên phải - Nhập ảnh và hiển thị 3 ảnh xuất ra
23
+ right_layout = QVBoxLayout()
24
+
25
+ # Button để nhập ảnh
26
+ self.btn_upload = QPushButton("Chọn ảnh để xử lý")
27
+ self.btn_upload.clicked.connect(self.upload_image)
28
+
29
+ # Labels để hiển thị 3 ảnh xuất ra
30
+ self.result_label_1 = QLabel("Ảnh kết quả 1")
31
+ self.result_label_2 = QLabel("Ảnh kết quả 2")
32
+ self.result_label_3 = QLabel("Ảnh kết quả 3")
33
+
34
+ right_layout.addWidget(self.btn_upload)
35
+ right_layout.addWidget(self.result_label_1)
36
+ right_layout.addWidget(self.result_label_2)
37
+ right_layout.addWidget(self.result_label_3)
38
+
39
+ # Thêm layout trái và phải vào layout chính
40
+ main_layout.addLayout(left_layout)
41
+ main_layout.addLayout(right_layout)
42
+
43
+ # Đặt layout chính cho cửa sổ
44
+ self.setLayout(main_layout)
45
+
46
+ # Khởi động camera để stream video
47
+ self.cap = cv2.VideoCapture(0)
48
+ self.timer = QTimer()
49
+ self.timer.timeout.connect(self.update_frame)
50
+ self.timer.start(30) # Cập nhật mỗi 30ms
51
+
52
+ def upload_image(self):
53
+ # Chọn ảnh từ máy tính
54
+ options = QFileDialog.Options()
55
+ file_name, _ = QFileDialog.getOpenFileName(self, "Chọn ảnh", "", "Image Files (*.png *.jpg *.jpeg *.bmp)", options=options)
56
+
57
+ if file_name:
58
+ # Load ảnh và hiển thị trên label (ví dụ ảnh kết quả thứ nhất)
59
+ pixmap = QPixmap(file_name)
60
+ self.result_label_1.setPixmap(pixmap.scaled(200, 200))
61
+
62
+ def update_frame(self):
63
+ # Cập nhật frame từ camera
64
+ ret, frame = self.cap.read()
65
+ if ret:
66
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
67
+ height, width, channel = frame.shape
68
+ step = channel * width
69
+ q_img = QImage(frame.data, width, height, step, QImage.Format_RGB888)
70
+ self.video_label.setPixmap(QPixmap.fromImage(q_img))
71
+
72
+ def closeEvent(self, event):
73
+ # Giải phóng camera khi đóng cửa sổ
74
+ self.cap.release()
75
+
76
+ if __name__ == "__main__":
77
+ app = QApplication(sys.argv)
78
+ window = MainWindow()
79
+ window.setWindowTitle("Giao diện xử lý ảnh và video")
80
+ window.show()
81
+ sys.exit(app.exec_())