コード例 #1
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
    def show_processed_vedio(self):
        """显示detected视频以及违法信息"""
        #违章表格初始化

        with open(PATH.run_a_red_lightpath(), 'r', encoding='UTF-8') as fp:
            data = []
            data = fp.readlines()
            if '\n' in data:
                data.remove('\n')
            row_lenth = len(data)
        self.ui.label_roadinfo.setPixmap(QPixmap(PATH.infomation_path()))
        self.ui.label_roadinfo.setScaledContents(True)
        self.model = QStandardItemModel()  #存储任意结构数据
        self.model.setHorizontalHeaderLabels(['车牌号码', '违章类型'])
        self.ui.tableView.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        for row in range(row_lenth):
            plate_number, ilegal_type = data[row].split(' ')
            ilegal_type = ilegal_type.replace('\n', '')
            i = QStandardItem(plate_number)
            j = QStandardItem(ilegal_type)
            self.model.setItem(row, 0, i)
            self.model.setItem(row, 1, j)
        self.ui.tableView.setModel(self.model)

        # 创建视频显示线程
        if self.specialroad is not True:
            self.Vedioplayname = self.video_outname
        self.th1 = threading.Thread(target=self.Display)
        self.th1.start()
コード例 #2
0
ファイル: imgOut.py プロジェクト: JUNSHIMUYA/cv_traffic
    def delet_info(self):
        """删除展示车辆的违法信息"""
        box = QMessageBox.warning(self.wnd, "提示", "确定删除该车辆的违法信息?", QMessageBox.Yes | QMessageBox.No)
        if box == QMessageBox.No:
            return
        else:
            try:
                del_name_path = self.imgnames_list.pop(self.current_img_index)
                del_name = del_name_path[0:7]
                if PATH.bool_alltimes is True:  
                    os.remove(self.imgpaths[self.current_img_index])
                    _ = self.imgpaths[self.current_img_index].split("\\")
                    txtpath = PATH.Road_ROOTpath() + _[4] + "\\illegal_car_info.txt"
                else:
                    os.remove(PATH.run_a_red_light_img_path() + del_name_path)
                    txtpath = PATH.run_a_red_lightpath()

                with open(txtpath, 'r', encoding='UTF-8') as fp:
                    lines = fp.readlines()
                    for i in range(len(lines)):
                        if del_name in lines[i]:
                            lines[i] = ''
                    fp.close()
                with open(txtpath, 'w', encoding='UTF-8') as fp:
                    fp.writelines(lines)
                box = QMessageBox.warning(self.wnd, "提示", "删除成功!", QMessageBox.Yes)
            except:
                box = QMessageBox.warning(self.wnd, "提示", "删除错误", QMessageBox.Yes)
            self.current_img_index = 0
            self.display_info()
コード例 #3
0
    def Open(self):
        """打开视频原文件按钮响应函数"""
        self.fileName, self.fileType = QFileDialog.getOpenFileName(
            self.mainWnd, 'Choose file', '', '*.avi')
        if self.fileName is None or '.avi' not in self.fileName:
            return
        elif 'out' not in self.fileName:
            VedioDate = time.ctime(os.path.getctime(self.fileName))
            VedioDate = VedioDate.replace(' ',
                                          "_").replace(':',
                                                       '_').replace('__', '_')
            PATH.setValue('CVedioDate', VedioDate)
            self.ui.label_date_text.setText(PATH.get_VedioDate())
            self.video_outname = PATH.run_a_red_light_vedio_path()

        #刷新信息显示
        self.ui.label_roadinfo.setText("                   车流量信息展示区域")
        self.model = QStandardItemModel()  #存储任意结构数据
        self.model.setHorizontalHeaderLabels(['车牌号码', '违章类型'])
        self.ui.tableView.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.ui.tableView.setModel(self.model)

        # 创建视频显示线程
        self.Vedioplayname = self.fileName
        th = threading.Thread(target=self.Display)
        th.start()
コード例 #4
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
    def get_roadinfo(self):
        """确定路口和时间段之后的操作"""
        if self.ui.chooseRoad.currentIndex() == -1:
            dig = QMessageBox.information(self, "提示", "未选择路口", QMessageBox.Yes)
            return
        self.ChosedTime = self.ui.choose_time.currentText()
        self.mainWnd.ui.label_road_text.setText(self.ChosedRoad)

        if self.ChosedTime == "所有时间" and self.ChosedRoad != "所有路口":
            PATH.setValue('RoadName', self.ChosedRoad)
            PATH.setValue('CVedioDate', self.ChosedTime)
            PATH.bool_alltimes = True
        else:
            PATH.bool_alltimes = False
            try:
                PATH.setValue('RoadName', self.ChosedRoad)
                PATH.setValue('CVedioDate', self.ChosedTime)
                Vedio_OutFileName = PATH.detect_result_path + self.ChosedRoad + '\\' + self.ChosedTime + "\\" + "Vedio_out.avi"
                self.mainWnd.Vedioplayname = Vedio_OutFileName
                self.mainWnd.specialroad = True
                self.show_processed_info.emit()
            except:
                dig = QMessageBox.warning(self, "警告", "未找到目标视频文件",
                                          QMessageBox.Yes)
        self.mainWnd.ui.label_date_text.setText(self.ChosedTime)
        self.mainWnd.ui.Open.setEnabled(True)
        self.mainWnd.ui.Button_imgout.setEnabled(True)
        self.mainWnd.ui.Button_infoout.setEnabled(True)
コード例 #5
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
 def __init__(self, mainWnd):
     QDialog.__init__(self)
     self.ui = Ui_SetRoad_dialog()
     self.ui.setupUi(self)
     self.mainWnd = mainWnd
     self.ui.Box_Existed_Roads.addItems(PATH.get_allroads())
     self.ui.Box_Existed_Roads.setCurrentIndex(-1)
     self.ui.pushButton_ok.clicked.connect(self.set_road)
コード例 #6
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
 def __init__(self, mainWnd):
     QDialog.__init__(self)
     self.ui = Ui_Dialog_chooseRoad()
     self.ui.setupUi(self)
     self.ui.chooseRoad.addItems(PATH.get_allroads())
     self.ui.chooseRoad.currentIndexChanged.connect(self.set_roadinfo)
     self.ui.pushButton_ok.clicked.connect(self.get_roadinfo)
     self.mainWnd = mainWnd
     self.ui.chooseRoad.setCurrentIndex(-1)
コード例 #7
0
 def img_init(self):
     """初始化img列表"""
     if PATH.bool_alltimes is True:
         self.imgpaths = []
         self.imgs_dict = PATH.get_road_imgspaths(PATH.get_roadname())
         for img_info in self.imgs_dict.keys():
             Road, Date, img = img_info.split(':')
             self.imgnames_list.append(img)
             self.imgpaths.append(self.imgs_dict[img_info])
     else:
         self.imgnames_list = list(os.listdir(PATH.run_a_red_light_img_path()))
     
     if len(self.imgnames_list) != 0:
         self.display_info()
         self.ui.before.setEnabled(True)
         self.ui.delete_info.setEnabled(True)
         self.ui.ChangeButton.setEnabled(True)
     else:
         box = QMessageBox.warning(self.wnd, "提示", "库存为空", QMessageBox.Yes)
コード例 #8
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
    def Open(self):
        """打开视频原文件按钮响应函数"""
        self.fileName, self.fileType = QFileDialog.getOpenFileName(
            self.mainWnd, 'Choose file', '', '*.avi')
        if self.fileName is None or '.avi' not in self.fileName:
            return
        elif 'out' not in self.fileName:
            VedioDate = time.ctime(os.path.getctime(self.fileName))
            VedioDate = VedioDate.replace(' ',
                                          "_").replace(':',
                                                       '_').replace('__', '_')
            PATH.setValue('CVedioDate', VedioDate)
            self.ui.label_date_text.setText(PATH.get_VedioDate())
            self.video_outname = PATH.run_a_red_light_vedio_path()

        # 创建视频显示线程
        self.Vedioplayname = self.fileName
        th = threading.Thread(target=self.Display)
        th.start()
コード例 #9
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
 def set_road(self):
     """路口设置对话框响应函数"""
     self.mainWnd.ui.Open.setEnabled(True)
     self.mainWnd.ui.Button_imgout.setEnabled(True)
     self.mainWnd.ui.Button_infoout.setEnabled(True)
     if self.ui.Text_NewRoad.toPlainText(
     ) is '' and self.ui.Box_Existed_Roads.currentIndex() is not -1:
         PATH.setValue('RoadName', self.ui.Box_Existed_Roads.currentText())
         self.mainWnd.ui.label_road_text.setText(
             self.ui.Box_Existed_Roads.currentText())
     elif self.ui.Text_NewRoad.toPlainText() is not '':
         PATH.setValue('RoadName', self.ui.Text_NewRoad.toPlainText())
         self.mainWnd.ui.label_road_text.setText(
             self.ui.Text_NewRoad.toPlainText())
     else:
         dig = QMessageBox.warning(self, "警告", "当前未设置路口!", QMessageBox.Yes)
         return
     dig = QMessageBox.information(self, "提示", "路口设置成功", QMessageBox.Yes)
     self.mainWnd.ui.Open.setEnabled(True)
     self.mainWnd.ui.Button_imgout.setEnabled(True)
     self.mainWnd.ui.Button_infoout.setEnabled(True)
コード例 #10
0
ファイル: imgOut.py プロジェクト: JUNSHIMUYA/cv_traffic
 def display_info(self):
     """展示违法信息"""
     try:
         n, m = self.imgnames_list[self.current_img_index].split('_')
         m = str(m).replace('.jpg', '')
         self.ui.plate_number.setText(n)
         self.ui.illegal_type.setText(m)
         if PATH.bool_alltimes is True:
             Date = self.date_allroads_list[self.current_img_index]
             RoadName = PATH.get_roadname()
             self.current_img_dirpath = PATH.detect_result_path + RoadName + "\\" + Date +  "\\illegal_imgs\\"
             self.ui.label_Road_Belong.setText(RoadName)
             self.ui.label_Time_Belong.setText(Date)
             self.ui.label.setPixmap(QPixmap(self.imgpaths[self.current_img_index]))
         else:
             self.current_img_dirpath = PATH.run_a_red_light_img_path()
             self.ui.label_Road_Belong.setText(PATH.get_roadname())
             self.ui.label_Time_Belong.setText(PATH.get_VedioDate())
             self.ui.label.setPixmap(QPixmap(PATH.run_a_red_light_img_path() + self.imgnames_list[self.current_img_index]))
         self.ui.label.setScaledContents(True)
     except:
         box = QMessageBox.warning(self.wnd, "提示", "库存为空", QMessageBox.Yes)
コード例 #11
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
 def set_roadinfo(self):
     """搜索对应路口文件夹的违法记录"""
     self.ChosedRoad = self.ui.chooseRoad.currentText()
     if self.ui.chooseRoad.currentIndex() == -1:
         pass
     else:
         self.ui.choose_time.clear()
         VedioList = PATH.get_chosed_roadinfo(self.ChosedRoad)
         if len(VedioList) == 0:
             dig = QMessageBox.information(self, "提示", "当前路口没有处理视频!",
                                           QMessageBox.Yes)
         else:
             self.ui.choose_time.addItem('所有时间')
             self.ui.choose_time.addItems(VedioList)
コード例 #12
0
ファイル: VedioDisplay.py プロジェクト: 31029/TrafficDetect
    def Api_button(self):
        """检测API接口"""
        try:
            print(self.fileName)
            print(self.video_outname)
            PATH.cheackFolders()

            self.Pos_list = self.mainWnd.pos_list
            self.worker = Worker(self.fileName, self.video_outname,
                                 self.Pos_list)
            self.worker.finished.connect(self.thread.quit)
            self.thread.started.connect(self.worker.work)
            self.worker.show_processed_vedio.connect(self.show_processed_vedio)

            self.stopEvent.set()
            print("正在关原视频")
            sleep(1)
            self.ui.DisplayLabel.setText(" " * 30 + "正在检测视频,请勿退出系统")
            print("Qthread开始")
            self.worker.moveToThread(self.thread)
            self.thread.start()
        except:
            dig = QMessageBox.warning(self.mainWnd, "警告", "错误操作!可选择再次打开程序",
                                      QMessageBox.Yes)
コード例 #13
0
ファイル: InfoOut.py プロジェクト: JUNSHIMUYA/cv_traffic
    def out(self):
        choic_item = self.ui.comboBox.currentText()
        dirpath = ''
        if PATH.bool_alltimes == True:  #若为所有时间
            crutime = gmtime()
            VedioDate = str(crutime.tm_year) + "所有时间"
        else:  #若为特定时间段
            try:
                time = PATH.get_VedioDate()
                print(time)
                timelist = time.split('_')
                VedioDate = timelist[6] + '_' + timelist[2] + '_' + timelist[3]
            except:
                crutime = gmtime()
                VedioDate = str(crutime.tm_year) + "_" + str(
                    crutime.tm_mon) + "_" + str(crutime.tm_mday)

        with open(PATH.run_a_red_lightpath(), 'r', encoding='UTF-8') as fp:
            data = []
            data_dict = {}
            data = fp.readlines()
            if '\n' in data:
                data.remove('\n')
            data_row = len(data)
            for i in range(data_row):
                plate_number, ilegal_type = data[i].split(' ')
                ilegal_type = ilegal_type.replace('\n', '')
                data_dict[plate_number] = ilegal_type

        if choic_item == 'Excel文件':
            dirpath = QFileDialog.getSaveFileName(
                self.wnd, '选择保存路径', PATH.DeskTop_path + PATH.get_roadname() +
                "_" + VedioDate + '.xlsx', 'xlsx(*.xlsx)')

            if dirpath[0] != '':
                row, col = 1, 0
                workbook = xlsxwriter.Workbook(dirpath[0])
                worksheet = workbook.add_worksheet('违法记录')
                title = ['车牌号码', '违法类型']
                worksheet.write(0, 0, title[0])
                worksheet.write(0, 1, title[1])
                for key in data_dict:
                    worksheet.write(row, col, key)
                    worksheet.write(row, col + 1, data_dict[key])
                    row = row + 1
                workbook.close()
            else:
                return
            #退出窗口
            self.ui.Quit.click()

        elif choic_item == 'Txt文件':
            dirpath = QFileDialog.getSaveFileName(
                self.wnd, '选择保存路径', PATH.DeskTop_path + PATH.get_roadname() +
                "_" + VedioDate + '.txt', 'Text Files(*.txt)')
            if dirpath[0] != '':
                with open(dirpath[0], 'w', newline='',
                          encoding='UTF-8') as txt_file:
                    title = ['车牌号码 ', '违法类型\n']
                    txt_file.writelines(title)
                    txt_file.writelines(data)
            else:
                return
            #退出窗口
            self.ui.Quit.click()
        try:
            os.system(dirpath[0])
        except:
            box = QMessageBox.information(self.wnd, "提示", "创建文件失败",
                                          QMessageBox.Yes)