class CardBordAIApp(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("CardBord AI Demo ver0.10") self.operator = Operator() self.setupUi() self.operator.speach.connect(self.speak_ai) self.init() def setupUi(self): self.mainlayout = QVBoxLayout(self) self.title = QLabel("CardBord Operator", self) self.mainlayout.addWidget(self.title) self.user_txtarea = QTextEdit(self) self.ai_txtarea = QTextEdit(self) self.users_edit_title = QLabel("質問に答えてください") self.users_edit = QLineEdit("", self) self.txtarea_layout = QHBoxLayout() self.txtarea_layout.addWidget(self.user_txtarea) self.txtarea_layout.addWidget(self.ai_txtarea) self.mainlayout.addLayout(self.txtarea_layout) self.mainlayout.addWidget(self.users_edit_title) self.mainlayout.addWidget(self.users_edit) self.send_btn = QPushButton("send", self) self.send_btn.setObjectName("send_btn") self.mainlayout.addWidget(self.send_btn) QMetaObject.connectSlotsByName(self) def init(self): # Talkエリアの初期化 self.user_txtarea.clear() self.ai_txtarea.clear() # オペレータ初期化、初期ワード取得 self.operator.init() @Slot() def on_send_btn_clicked(self): # UI処理 user_word = self.users_edit.text() if user_word == "": return None self.users_edit.clear() self.user_txtarea.append(user_word) # サーバー(エンジン)へユーザワードを送信 self.operator.send(user_word) @Slot() def speak_ai(self, word): # AIのトークを表示 # ディレイを使ってテンポを整える def wrapper(): self.ai_txtarea.append(word) QTimer.singleShot(TALK_DELAY, wrapper)
from time import sleep from Operator import Operator operator = Operator() # Создаём экземпляр оператора (СППР). # Загружаем статический кадр в память with open('img.jpg', "rb") as file: img = file.read() # Подменяем видеопоток с камеры на статический кадр. while True: # Анализируем поток, отбрасываем ненужные кадры operator.send( img, 1 ) # Отправляем фотографию пожара/дыма/человека с поддельной вероятностью обнаружения в 100%. sleep(1) # 1 FPS для теста хватит.