Пример #1
0
def detect_key(wav_location):
    D = Detect()
    bpm = D.detect(wav_location)
    sys.exit(1)
    score = music21.converter.parse(os.getcwd() + '/' + file_name)
    key1 = score.analyze('Krumhansl')
    key2 = score.analyze('AardenEssen')
    if key1 != key2:
        print(key1, key2)
    else:
        print(key1)
Пример #2
0
class Ui_MainWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.timer_camera = QtCore.QTimer()
        self.set_ui()
        self.slot_init()
        self.TIME = 0
        self.detector = Detect()
        self.sgbm = SGBM()
        self.sgbm.Init_SGBM()
        self.Camera = cv.VideoCapture()
        self.CAM_NUM = 1

    def set_ui(self):
        self.__layout_main = QtWidgets.QHBoxLayout()  # 总布局
        self.__layout_data_show = QtWidgets.QVBoxLayout()  # 数据(视频)显示布局
        self.__layout_fun_button = QtWidgets.QVBoxLayout()  # 按键布局
        self.button_start = QtWidgets.QPushButton('开始识别')  # 建立用于打开摄像头的按键
        self.button_close = QtWidgets.QPushButton('退出')  # 建立用于退出程序的按键
        self.button_model2 = QtWidgets.QPushButton('MobileNet2')  # 建立用于退出程序的按键
        self.button_model3 = QtWidgets.QPushButton('MobileNet3')  # 建立用于退出程序的按键
        self.button_start.setMinimumHeight(200)  # 设置按键大小
        self.button_close.setMinimumHeight(200)
        self.button_model2.setMinimumHeight(200)
        self.button_model3.setMinimumHeight(200)

        self.button_close.move(10, 100)  # 移动按键
        # '''信息显示'''
        # self.textEdit = QTextEdit()
        # self.textEdit.setFixedSize(400, 800)
        '''显示的视频窗口'''
        self.pix = QPixmap('./background.jpg')
        self.label_show_camera = QtWidgets.QLabel()  # 定义显示视频的Label
        self.label_show_camera.setFixedSize(960,
                                            720)  # 给显示视频的Label设置大小为641x481
        self.label_show_camera.setStyleSheet(
            'background-color:rgb(96,96,96)')  #设置背景颜色
        self.label_show_camera.setPixmap(self.pix)
        '''把某些控件加入到总布局中'''
        self.__layout_main.addLayout(self.__layout_fun_button)  # 把按键布局加入到总布局中
        self.__layout_main.addWidget(
            self.label_show_camera)  # 把用于显示视频的Label加入到总布局中
        # self.__layout_main.addWidget(self.textEdit)
        '''把按键加入到按键布局中'''
        self.__layout_fun_button.addWidget(
            self.button_start)  # 把打开摄像头的按键放到按键布局中
        self.__layout_fun_button.addWidget(
            self.button_close)  # 把退出程序的按键放到按键布局中
        self.__layout_fun_button.addWidget(
            self.button_model2)  # 把打开摄像头的按键放到按键布局中
        self.__layout_fun_button.addWidget(
            self.button_model3)  # 把打开摄像头的按键放到按键布局中
        '''总布局布置好后就可以把总布局作为参数传入下面函数'''
        self.setLayout(self.__layout_main)  # 到这步才会显示所有控件

    '''初始化所有槽函数'''

    def slot_init(self):
        self.button_start.clicked.connect(
            self.button_start_clicked)  # 若该按键被点击,则调用button_start_clicked()
        self.button_model2.clicked.connect(
            self.button_model2_clicked)  # 若该按键被点击,则调用button_start_clicked()
        self.button_model3.clicked.connect(
            self.button_model3_clicked)  # 若该按键被点击,则调用button_start_clicked()
        self.timer_camera.timeout.connect(
            self.show_camera)  # 若定时器结束,则调用show_camera()
        self.button_close.clicked.connect(
            self.close
        )  # 若该按键被点击,则调用close(),注意这个close是父类QtWidgets.QWidget自带的,会关闭程序

    '''槽函数之一'''

    def button_start_clicked(self):
        if self.timer_camera.isActive() == False:  # 若定时器未启动
            flag = self.Camera.open(self.CAM_NUM)
            if flag == False:
                msg = QtWidgets.QMessageBox.warning(
                    self,
                    'warning',
                    "请检查相机于电脑是否连接正确",
                    buttons=QtWidgets.QMessageBox.Ok)
            else:
                self.timer_camera.start(1)  # 定时器开始计时30ms,结果是每过30ms从摄像头中取一帧显示
                self.button_start.setText('结束识别')
        else:
            self.timer_camera.stop()  # 关闭定时器
            self.Camera.release()
            self.label_show_camera.clear()  # 清空视频显示区域
            self.button_start.setText('开始识别')

    def button_model2_clicked(self):
        self.detector.Init_Net("mb2-ssd")

    def button_model3_clicked(self):
        self.detector.Init_Net("mb3-large-ssd")

    def SegmentFrame(self, Fream):
        double = cv.resize(Fream, (640, 240), cv.INTER_AREA)
        left = double[0:240, 0:320]
        right = double[0:240, 320:640]
        return left, right

    def show_camera(self):
        # Camera = cv.VideoCapture(1)
        # if not Camera.isOpened():
        #     print("Could not open the Camera")
        #     sys.exit()

        ret, Fream = self.Camera.read()
        # cv.imwrite("Two.jpg",Fream)
        os.system("./camera.sh")
        while (1):
            ret, Fream = self.Camera.read()
            if not ret:
                break
            LeftImage, RightImage = self.SegmentFrame(Fream)
            # start = time()
            result_rect = self.detector.detect(LeftImage)
            distance, disp = self.sgbm.Coordination(LeftImage, RightImage,
                                                    result_rect)
            result = LeftImage.copy()
            for i in range(0, len(result_rect)):
                cv.rectangle(result, (result_rect[i][0], result_rect[i][1]),
                             (result_rect[i][2], result_rect[i][3]),
                             (255, 255, 0), 4)
                cv.putText(
                    result,
                    str(distance[i]),
                    (result_rect[i][0] + 20, result_rect[i][1] + 40),
                    cv.FONT_HERSHEY_SIMPLEX,
                    1,  # font scale
                    (255, 0, 255),
                    2)  # line type
            # end = time()
            # seconds = end - start
            # fps = 1/seconds
            # print( "Estimated frames per second : {0}".format(fps))
            # cv.imshow("left",LeftImage)
            # cv.imshow("right",RightImage)
            # cv.imshow("disp",disp)
            # cv.imshow("result", coordinate)
            disp = cv.cvtColor(disp, cv.COLOR_GRAY2BGR)
            htich1 = np.hstack((LeftImage, RightImage))
            htich2 = np.hstack((disp, result))
            vtich = np.vstack((htich1, htich2))
            # cv.imshow("result", vtich)

            if cv.waitKey(1) == ord('q'):
                break
            show = cv.resize(vtich, (960, 720))  # 把读到的帧的大小重新设置为 1280x960
            show = cv.cvtColor(show, cv.COLOR_BGR2RGB)
            # while(1):
            showImage = QtGui.QImage(
                show.data, show.shape[1], show.shape[0],
                QtGui.QImage.Format_RGB888)  # 把读取到的视频数据变成QImage形式
            self.label_show_camera.setPixmap(
                QtGui.QPixmap.fromImage(showImage))  # 往显示视频的Label里 显示QImage
            return
Пример #3
0
    right = double[0:240, 320:640]
    return left, right


while (True):
    ret, Fream = Camera.read()
    if not ret:
        break
    start = time()
    # DoubleImage = cv.resize(Fream, (640, 240), cv.INTER_AREA)
    # LeftImage = DoubleImage[0:240,0:320]
    # RightImage = DoubleImage[0:240,320:640]
    LeftImage, RightImage = SegmentFrame(Fream)

    start2 = time()
    result_rect = detector.detect(LeftImage)
    print("Detect time:" + str(start2 - start))
    print(result_rect)
    start3 = time()
    distance, disp = sgbm.Coordination(LeftImage, RightImage, result_rect)
    print("Coordination time:" + str(start3 - start))
    coordinate = LeftImage.copy()
    for i in range(0, len(result_rect)):
        cv.rectangle(coordinate, (result_rect[i][0], result_rect[i][1]),
                     (result_rect[i][2], result_rect[i][3]), (255, 255, 0), 4)
        cv.putText(
            coordinate,
            str(distance[i]),
            (result_rect[i][0] + 20, result_rect[i][1] + 40),
            cv.FONT_HERSHEY_SIMPLEX,
            1,  # font scale