LouisZhang 1 年之前
父節點
當前提交
576435320c
共有 100 個文件被更改,包括 520 次插入10 次删除
  1. 32 10
      AIAPP/aiapp/ui/traffic.ui
  2. 1 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/app.bat
  3. 二進制
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/dev/__pycache__/camera.cpython-39.pyc
  4. 94 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/dev/camera.py
  5. 二進制
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/__pycache__/app.cpython-39.pyc
  6. 二進制
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/__pycache__/win.cpython-39.pyc
  7. 10 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/app.py
  8. 65 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/win.py
  9. 9 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/main.py
  10. 二進制
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/mods/best.pt
  11. 二進制
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/__pycache__/traffic_ui.cpython-39.pyc
  12. 3 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/tools.bat
  13. 199 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/traffic.ui
  14. 107 0
      吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/traffic_ui.py
  15. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/0011.png
  16. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/1.jpg
  17. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/best.pt
  18. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0001.png
  19. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0002.png
  20. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0003.png
  21. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0004.png
  22. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0005.png
  23. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0006.png
  24. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0007.png
  25. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0008.png
  26. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0009.png
  27. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0010.png
  28. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0011.png
  29. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0012.png
  30. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0013.png
  31. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0014.png
  32. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0015.png
  33. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0016.png
  34. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0017.png
  35. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0018.png
  36. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0019.png
  37. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0020.png
  38. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0021.png
  39. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0022.png
  40. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0023.png
  41. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0024.png
  42. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0025.png
  43. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0026.png
  44. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0027.png
  45. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0028.png
  46. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0029.png
  47. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0030.png
  48. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0031.png
  49. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0032.png
  50. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0033.png
  51. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0034.png
  52. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0035.png
  53. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0036.png
  54. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0037.png
  55. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0038.png
  56. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0039.png
  57. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0040.png
  58. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0041.png
  59. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0042.png
  60. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0043.png
  61. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0044.png
  62. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0045.png
  63. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0046.png
  64. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0047.png
  65. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0048.png
  66. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0049.png
  67. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0050.png
  68. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0051.png
  69. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0052.png
  70. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0053.png
  71. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0054.png
  72. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0055.png
  73. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0056.png
  74. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0057.png
  75. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0058.png
  76. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0059.png
  77. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0060.png
  78. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0061.png
  79. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0062.png
  80. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0063.png
  81. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0064.png
  82. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0065.png
  83. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0066.png
  84. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0067.png
  85. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0068.png
  86. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0069.png
  87. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0070.png
  88. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0071.png
  89. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0072.png
  90. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0073.png
  91. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0074.png
  92. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0075.png
  93. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0076.png
  94. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0077.png
  95. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0078.png
  96. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0079.png
  97. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0080.png
  98. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0081.png
  99. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0082.png
  100. 二進制
      吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0083.png

+ 32 - 10
AIAPP/aiapp/ui/traffic.ui

@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>897</width>
-    <height>433</height>
+    <width>753</width>
+    <height>442</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -16,10 +16,10 @@
   <widget class="QLabel" name="lblVideo">
    <property name="geometry">
     <rect>
-     <x>30</x>
+     <x>50</x>
      <y>80</y>
-     <width>640</width>
-     <height>480</height>
+     <width>481</width>
+     <height>321</height>
     </rect>
    </property>
    <property name="styleSheet">
@@ -48,7 +48,7 @@ border-radius:10px;</string>
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
-     <x>230</x>
+     <x>140</x>
      <y>30</y>
      <width>261</width>
      <height>31</height>
@@ -71,7 +71,7 @@ border-radius:10px;</string>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
-     <x>690</x>
+     <x>560</x>
      <y>90</y>
      <width>81</width>
      <height>20</height>
@@ -84,8 +84,8 @@ border-radius:10px;</string>
   <widget class="QLabel" name="lblInfo">
    <property name="geometry">
     <rect>
-     <x>700</x>
-     <y>270</y>
+     <x>550</x>
+     <y>170</y>
      <width>171</width>
      <height>141</height>
     </rect>
@@ -104,7 +104,7 @@ boder-color:blue;</string>
     <rect>
      <x>30</x>
      <y>60</y>
-     <width>641</width>
+     <width>471</width>
      <height>20</height>
     </rect>
    </property>
@@ -112,6 +112,28 @@ boder-color:blue;</string>
     <enum>Qt::Horizontal</enum>
    </property>
   </widget>
+  <widget class="QGroupBox" name="groupBox">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>70</y>
+     <width>501</width>
+     <height>351</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">border-width:2px;
+border-style:solid;
+border-radius:10px;
+border-top-color:#ffffff;
+border-left-color:#ffffff;
+border-bottom-color:#bbbbbb;
+border-right-color:#bbbbbb;</string>
+   </property>
+   <property name="title">
+    <string>GroupBox</string>
+   </property>
+  </widget>
  </widget>
  <resources/>
  <connections/>

+ 1 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/app.bat

@@ -0,0 +1 @@
+python main.py

二進制
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/dev/__pycache__/camera.cpython-39.pyc


+ 94 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/dev/camera.py

@@ -0,0 +1,94 @@
+from PyQt5.QtCore import QThread    # 引入多线程,设备是多个,一个设备一个任务
+import cv2
+import numpy as np
+from ultralytics import YOLO   # 1
+# from cv2 import VideoCapture 
+
+# 1. 定义信号(引入)
+from PyQt5.QtCore import pyqtSignal
+
+class CameraDev(QThread):
+    # 定义信号(定义)
+    sig_video = pyqtSignal(bytes, int, int, int, int, int, int)  # 信号传递的数据(图像的二进制数据,字节序列(bytes), 图像高度int,宽度int,通道数int)
+    def __init__(self):
+        super(CameraDev, self).__init__()
+        # 开始视频抓取的任务初始化
+        # 初始化摄像头
+        self.cam = cv2.VideoCapture(
+            0, # 摄像头的编号,从0
+            cv2.CAP_DSHOW # 视频的处理调用DirectX 3D (DirectShow)
+        )
+        self.isOver = False
+        self.model = YOLO("mods/best.pt")   # 2
+
+    def run(self):
+        # kernel = np.array([  # 深度学习就是找到一个kernel是的特征对分类有效
+        #     [0, -2, 0],
+        #     [-2, 8, -2],
+        #     [0, -2, 0]
+        # ])
+        # 设备线程的任务,run结束,则任务结束
+        while not self.isOver:
+            # 反复抓取视频处理
+            # print("设备准备工作!")
+            status, img = self.cam.read()  # 从摄像头读取图像
+            if status:
+                # 翻转图像
+                img = cv2.flip(img, 1)
+                # print(img.shape)
+                # 显示图像
+                # 调用人工智能模块,进行图像识别(处理)
+                # img = cv2.GaussianBlur(img, (3, 3), 2.0)
+                # img = cv2.filter2D(img, -1, kernel, delta=200.0)
+                result = self.model(img)  # 3
+                # 处理结果  # 4
+                boxes = result[0].boxes
+                names = result[0].names
+                obj = [-1, -1]   # 记录两个目标的类别:目标1与目标2
+                right_or_left = -1  # 记录两个目标输赢的位置0(左赢) , 1 (右赢) , 2 (平局)
+                center_x = [-1, -1]
+
+                if len(boxes) == 2: # 只处理两个目标
+                    for i in range(len(boxes)):
+                        cls = int(boxes.cls[i].cpu().item())
+                        conf = boxes.conf[i].cpu().item()
+                        x1, y1, x2, y2 = boxes.xyxy[i].cpu().numpy().astype(np.int32)
+                        # 标注:目标区域,名字,概率
+                        img = cv2.rectangle(img, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=1)
+                        img = cv2.putText(img, F"{names[cls]}:{conf:.2f}", (x1, y1), 0, 1, color=(255, 0, 0), thickness=1)
+                        obj[i] = cls
+                        center_x[i] = x2 - x1
+                if obj[0] != -1:  # 条件:必须有两个目标才判定输赢
+                    # 判定输赢
+                    if obj[0] == 0 and obj[1] == 0: # 石头 石头
+                        right_or_left = 2                                     # 判定赢的位置是左还是右:0左赢,1右赢,2平局
+                    if obj[0] == 0 and obj[1] == 1: # 石头 剪刀
+                        right_or_left = 0 if center_x[0] < center_x[1] else 1 
+                    if obj[0] == 0 and obj[1] == 2: # 石头 布
+                        right_or_left = 0 if center_x[1] < center_x[0] else 1 
+                    if obj[0] == 1 and obj[1] == 0: # 剪刀 石头
+                        right_or_left = 0 if center_x[1] < center_x[0] else 1 
+                    if obj[0] == 1 and obj[1] == 1: # 剪刀 剪刀
+                        right_or_left = 2
+                    if obj[0] == 1 and obj[1] == 2: # 剪刀 布
+                        right_or_left = 0 if center_x[0] < center_x[1] else 1 
+                    if obj[0] == 2 and obj[1] == 0: # 布 石头
+                        right_or_left = 0 if center_x[0] < center_x[1] else 1 
+                    if obj[0] == 2 and obj[1] == 1: # 布 剪刀
+                        right_or_left = 0 if center_x[1] < center_x[0] else 1
+                    if obj[0] == 2 and obj[1] == 2: # 布 布
+                        right_or_left = 2
+                # 2. 发送信号
+                self.sig_video.emit(img.tobytes(), img.shape[0], img.shape[1], img.shape[2], obj[0], obj[1], right_or_left)
+            QThread.usleep(100000)  # 1000000微秒 = 1秒
+    
+    def close(self):
+        # 停止多任务
+        self.isOver = True
+        while self.isRunning():
+            pass
+
+        print("线程终止")
+        # 释放设备
+        self.cam.release()
+        print("设备释放")

二進制
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/__pycache__/app.cpython-39.pyc


二進制
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/__pycache__/win.cpython-39.pyc


+ 10 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/app.py

@@ -0,0 +1,10 @@
+from PyQt5.QtWidgets import QApplication
+from frame.win import Win
+
+class App(QApplication):  # 扩展QApplication类
+    def __init__(self):   # 实现构造器
+        super(App, self).__init__([])   # 调用父类构造器(参数:命令行参数)
+
+        # 调用Win
+        self.win = Win()
+        self.win.show()

+ 65 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/frame/win.py

@@ -0,0 +1,65 @@
+from PyQt5.QtWidgets import QDialog
+from PyQt5.QtGui import QImage  #,QPxmap
+from PyQt5.QtGui import QPixmap  
+# 引入
+from ui.traffic_ui import Ui_Traffic
+
+from dev.camera import CameraDev
+
+class Win(QDialog):  # 扩展QDialog(新增,覆盖功能)
+    def __init__(self):  # 实现构造器(完成初始化,数据初始化,功能初始化)
+        super(Win, self).__init__()   # 调用父类构造器
+        # 调用ui
+        # 创建对象
+        self.ui = Ui_Traffic()  
+        # 关联ui到当前窗体
+        self.ui.setupUi(self)
+        
+        # 创建一个设备对象
+        self.dev = CameraDev()
+        # 启动设备线程工作
+        self.dev.start()
+
+        # 3. 绑定信号与槽。
+        self.dev.sig_video.connect(self.showVideo)
+
+    # 3. 定义槽(Slot)函数 (Qt技术:信号与槽),一定与信号同型
+    def showVideo(self, data, h, w, c, obj1, obj2, r_or_l):
+        # print("(",h, ",", w, ",",c, ")")  # python格式字符串
+        # 1. 使用data,h, w, c创建QImage
+        q_img = QImage(
+            data,    # 图像的字节数组
+            w,       # 图像宽度
+            h,       # 图像高度
+            w * c,   # 图像每行字节数
+            QImage.Format_BGR888   # 图像格式BGR,每个通道8个bit,1个字节
+        )
+        # 2. 使用QImage创建QPixmap
+        pix_img = QPixmap.fromImage(q_img)  # 自动从QImage转换为QPixmap,QLabel只支持QPixmap格式
+        # 3. 显示QLabel:lblVideo  
+        self.ui.lblVideo.setPixmap(pix_img)
+        # 4 适当的缩放
+        self.ui.lblVideo.setScaledContents(True)
+        
+        # 显示裁判结果
+        if r_or_l == 0:
+            self.ui.lblInfo.setText(F"识别结果:[{toString(obj1)}]与[{toString(obj2)}],\n输赢结果:左边赢")  
+        if r_or_l == 1:
+            self.ui.lblInfo.setText(F"识别结果:[{toString(obj1)}]与[{toString(obj2)}],\n输赢结果:右边赢")
+        if r_or_l == 2:
+            self.ui.lblInfo.setText(F"识别结果:[{toString(obj1)}]与[{toString(obj2)}],\n输赢结果:平局")
+        
+    def closeEvent(self, e): # 当窗体关闭前会调用
+        self.dev.close()
+        print("窗口关闭")
+
+def toString(obj):
+    if obj == 0:
+        return "石头"
+    elif obj == 1:
+        return "剪刀"
+    elif obj == 2:
+        return "布"
+    else:
+        return ""
+            

+ 9 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/main.py

@@ -0,0 +1,9 @@
+import PyQt5.QtCore
+from frame.app import App
+
+PyQt5.QtCore.QCoreApplication.setAttribute(PyQt5.QtCore.Qt.AA_EnableHighDpiScaling)
+app = App()
+
+app.exec()  # 消息循环(程序循环处理操作系统发过来的消息)阻塞函数
+
+print("程序正常终止")

二進制
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/mods/best.pt


二進制
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/__pycache__/traffic_ui.cpython-39.pyc


+ 3 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/tools.bat

@@ -0,0 +1,3 @@
+@rem @符号在执行命令,不回显命令行
+@pyuic5 -o traffic_ui.py traffic.ui
+

+ 199 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/traffic.ui

@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Traffic</class>
+ <widget class="QDialog" name="Traffic">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>975</width>
+    <height>553</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>猜拳</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <widget class="QLabel" name="lblVideo">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>100</y>
+     <width>481</width>
+     <height>321</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">border-width:1px;
+border-style:solid;
+border-color:#FF0000;
+border-radius:10px;</string>
+   </property>
+   <property name="text">
+    <string>TextLabel</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="btnCapture">
+   <property name="geometry">
+    <rect>
+     <x>310</x>
+     <y>580</y>
+     <width>75</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>抓取图像</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>140</x>
+     <y>30</y>
+     <width>231</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="font">
+    <font>
+     <family>楷体</family>
+     <pointsize>20</pointsize>
+     <weight>50</weight>
+     <italic>false</italic>
+     <bold>false</bold>
+    </font>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">font: 22pt &quot;楷体&quot;;
+font: 20pt &quot;楷体&quot;;</string>
+   </property>
+   <property name="text">
+    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;智能猜拳裁判系统&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+   </property>
+   <property name="alignment">
+    <set>Qt::AlignCenter</set>
+   </property>
+  </widget>
+  <widget class="Line" name="line">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>40</y>
+     <width>121</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="groupBox">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>90</y>
+     <width>501</width>
+     <height>341</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">border-width:8px;
+border-style:solid;
+border-radius:10px;
+border-top-color:yellow;
+border-left-color:pink;
+border-bottom-color:orange;
+border-right-color:red;
+</string>
+   </property>
+   <property name="title">
+    <string/>
+   </property>
+  </widget>
+  <widget class="Line" name="line_2">
+   <property name="geometry">
+    <rect>
+     <x>370</x>
+     <y>40</y>
+     <width>141</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_2">
+   <property name="geometry">
+    <rect>
+     <x>530</x>
+     <y>60</y>
+     <width>351</width>
+     <height>191</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">border-width:2px;
+border-style:solid;
+border-radius:10px;
+border-top-color:#ffffff;
+border-left-color:#ffffff;
+border-bottom-color:#bbbbbb;
+border-right-color:#bbbbbb;
+font: 12pt &quot;楷体&quot;;
+</string>
+   </property>
+   <property name="title">
+    <string>识别信息:</string>
+   </property>
+   <widget class="QLabel" name="lblInfo">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>30</y>
+      <width>321</width>
+      <height>131</height>
+     </rect>
+    </property>
+    <property name="styleSheet">
+     <string notr="true">border-width:3px;
+font: 12pt &quot;楷体&quot;;
+border-style:dotted;
+boder-color:blue;</string>
+    </property>
+    <property name="text">
+     <string>显示信息:</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QLabel" name="label_2">
+   <property name="geometry">
+    <rect>
+     <x>580</x>
+     <y>300</y>
+     <width>271</width>
+     <height>91</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">border-width:2px;
+font: 11pt &quot;楷体&quot;;
+border-style:solid;
+border-radius:10px;
+border-top-color:#ffffff;
+border-left-color:#ffffff;
+border-bottom-color:#bbbbbb;
+border-right-color:#bbbbbb;
+</string>
+   </property>
+   <property name="text">
+    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;猜拳游戏操作方便猜拳游戏操作方便,&lt;/p&gt;&lt;p&gt;贴近于生活,&lt;/p&gt;&lt;p&gt;能很好地满足玩家的好奇心和竞争性。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 107 - 0
吕梁学院@社会主义接班组/01源代码/01项目代码/aiapp/ui/traffic_ui.py

@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'traffic.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.9
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again.  Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Traffic(object):
+    def setupUi(self, Traffic):
+        Traffic.setObjectName("Traffic")
+        Traffic.resize(975, 553)
+        Traffic.setStyleSheet("")
+        self.lblVideo = QtWidgets.QLabel(Traffic)
+        self.lblVideo.setGeometry(QtCore.QRect(30, 100, 481, 321))
+        self.lblVideo.setStyleSheet("border-width:1px;\n"
+"border-style:solid;\n"
+"border-color:#FF0000;\n"
+"border-radius:10px;")
+        self.lblVideo.setObjectName("lblVideo")
+        self.btnCapture = QtWidgets.QPushButton(Traffic)
+        self.btnCapture.setGeometry(QtCore.QRect(310, 580, 75, 31))
+        self.btnCapture.setObjectName("btnCapture")
+        self.label = QtWidgets.QLabel(Traffic)
+        self.label.setGeometry(QtCore.QRect(140, 30, 231, 41))
+        font = QtGui.QFont()
+        font.setFamily("楷体")
+        font.setPointSize(20)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(50)
+        self.label.setFont(font)
+        self.label.setStyleSheet("font: 22pt \"楷体\";\n"
+"font: 20pt \"楷体\";")
+        self.label.setAlignment(QtCore.Qt.AlignCenter)
+        self.label.setObjectName("label")
+        self.line = QtWidgets.QFrame(Traffic)
+        self.line.setGeometry(QtCore.QRect(20, 40, 121, 20))
+        self.line.setFrameShape(QtWidgets.QFrame.HLine)
+        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
+        self.line.setObjectName("line")
+        self.groupBox = QtWidgets.QGroupBox(Traffic)
+        self.groupBox.setGeometry(QtCore.QRect(20, 90, 501, 341))
+        self.groupBox.setStyleSheet("border-width:8px;\n"
+"border-style:solid;\n"
+"border-radius:10px;\n"
+"border-top-color:yellow;\n"
+"border-left-color:pink;\n"
+"border-bottom-color:orange;\n"
+"border-right-color:red;\n"
+"")
+        self.groupBox.setTitle("")
+        self.groupBox.setObjectName("groupBox")
+        self.line_2 = QtWidgets.QFrame(Traffic)
+        self.line_2.setGeometry(QtCore.QRect(370, 40, 141, 20))
+        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
+        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
+        self.line_2.setObjectName("line_2")
+        self.groupBox_2 = QtWidgets.QGroupBox(Traffic)
+        self.groupBox_2.setGeometry(QtCore.QRect(530, 60, 351, 191))
+        self.groupBox_2.setStyleSheet("border-width:2px;\n"
+"border-style:solid;\n"
+"border-radius:10px;\n"
+"border-top-color:#ffffff;\n"
+"border-left-color:#ffffff;\n"
+"border-bottom-color:#bbbbbb;\n"
+"border-right-color:#bbbbbb;\n"
+"font: 12pt \"楷体\";\n"
+"")
+        self.groupBox_2.setObjectName("groupBox_2")
+        self.lblInfo = QtWidgets.QLabel(self.groupBox_2)
+        self.lblInfo.setGeometry(QtCore.QRect(10, 30, 321, 131))
+        self.lblInfo.setStyleSheet("border-width:3px;\n"
+"font: 12pt \"楷体\";\n"
+"border-style:dotted;\n"
+"boder-color:blue;")
+        self.lblInfo.setObjectName("lblInfo")
+        self.label_2 = QtWidgets.QLabel(Traffic)
+        self.label_2.setGeometry(QtCore.QRect(580, 300, 271, 91))
+        self.label_2.setStyleSheet("border-width:2px;\n"
+"font: 11pt \"楷体\";\n"
+"border-style:solid;\n"
+"border-radius:10px;\n"
+"border-top-color:#ffffff;\n"
+"border-left-color:#ffffff;\n"
+"border-bottom-color:#bbbbbb;\n"
+"border-right-color:#bbbbbb;\n"
+"")
+        self.label_2.setObjectName("label_2")
+
+        self.retranslateUi(Traffic)
+        QtCore.QMetaObject.connectSlotsByName(Traffic)
+
+    def retranslateUi(self, Traffic):
+        _translate = QtCore.QCoreApplication.translate
+        Traffic.setWindowTitle(_translate("Traffic", "猜拳"))
+        self.lblVideo.setText(_translate("Traffic", "TextLabel"))
+        self.btnCapture.setText(_translate("Traffic", "抓取图像"))
+        self.label.setText(_translate("Traffic", "<html><head/><body><p>智能猜拳裁判系统</p></body></html>"))
+        self.groupBox_2.setTitle(_translate("Traffic", "识别信息:"))
+        self.lblInfo.setText(_translate("Traffic", "显示信息:"))
+        self.label_2.setText(_translate("Traffic", "<html><head/><body><p>猜拳游戏操作方便猜拳游戏操作方便,</p><p>贴近于生活,</p><p>能很好地满足玩家的好奇心和竞争性。</p><p><br/></p><p><br/></p></body></html>"))

二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/0011.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/1.jpg


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/best.pt


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0001.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0002.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0003.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0004.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0005.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0006.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0007.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0008.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0009.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0010.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0011.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0012.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0013.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0014.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0015.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0016.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0017.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0018.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0019.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0020.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0021.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0022.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0023.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0024.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0025.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0026.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0027.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0028.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0029.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0030.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0031.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0032.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0033.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0034.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0035.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0036.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0037.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0038.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0039.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0040.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0041.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0042.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0043.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0044.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0045.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0046.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0047.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0048.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0049.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0050.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0051.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0052.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0053.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0054.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0055.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0056.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0057.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0058.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0059.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0060.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0061.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0062.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0063.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0064.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0065.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0066.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0067.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0068.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0069.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0070.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0071.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0072.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0073.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0074.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0075.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0076.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0077.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0078.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0079.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0080.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0081.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0082.png


二進制
吕梁学院@社会主义接班组/01源代码/02训练代码/caiquan project/caiquan/images/train/0083.png


Some files were not shown because too many files changed in this diff