Пример #1
0
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.available_cameras = QCameraInfo.availableCameras()
        if not self.available_cameras:
            pass #quit

        self.status = QStatusBar()
        self.setStatusBar(self.status)


        self.save_path = ""

        self.viewfinder = QCameraViewfinder()
        self.viewfinder.show()
        self.setCentralWidget(self.viewfinder)

        # Set the default camera.
        self.select_camera(0)

        # Setup tools
        camera_toolbar = QToolBar("Camera")
        camera_toolbar.setIconSize(QSize(14, 14))
        self.addToolBar(camera_toolbar)

        photo_action = QAction(QIcon(os.path.join('images', 'camera-black.png')), "Take photo...", self)
        photo_action.setStatusTip("Take photo of current view")
        photo_action.triggered.connect(self.take_photo)
        camera_toolbar.addAction(photo_action)

        change_folder_action = QAction(QIcon(os.path.join('images', 'blue-folder-horizontal-open.png')), "Change save location...", self)
        change_folder_action.setStatusTip("Change folder where photos are saved.")
        change_folder_action.triggered.connect(self.change_folder)
        camera_toolbar.addAction(change_folder_action)


        camera_selector = QComboBox()
        camera_selector.addItems([c.description() for c in self.available_cameras])
        camera_selector.currentIndexChanged.connect( self.select_camera )

        camera_toolbar.addWidget(camera_selector)


        self.setWindowTitle("NSAViewer")
        self.show()
Пример #2
0
    def __init__(self):
        super(MainWindow, self).__init__()

        self.cameraInfo = QCameraInfo.defaultCamera()
        self.camera = QCamera(self.cameraInfo)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.imageCapture = QCameraImageCapture(self.camera)
        self.imageCapture.imageCaptured.connect(self.imageCaptured)
        self.imageCapture.imageSaved.connect(self.imageSaved)
        self.currentPreview = QImage()

        toolBar = QToolBar()
        self.addToolBar(toolBar)

        fileMenu = self.menuBar().addMenu("&File")
        shutterIcon = QIcon(
            os.path.join(os.path.dirname(__file__), "shutter.svg"))
        self.takePictureAction = QAction(shutterIcon,
                                         "&Take Picture",
                                         self,
                                         shortcut="Ctrl+T",
                                         triggered=self.takePicture)
        self.takePictureAction.setToolTip("Take Picture")
        fileMenu.addAction(self.takePictureAction)
        toolBar.addAction(self.takePictureAction)

        exitAction = QAction(QIcon.fromTheme("application-exit"),
                             "E&xit",
                             self,
                             shortcut="Ctrl+Q",
                             triggered=self.close)
        fileMenu.addAction(exitAction)

        aboutMenu = self.menuBar().addMenu("&About")
        aboutQtAction = QAction("About &Qt", self, triggered=qApp.aboutQt)
        aboutMenu.addAction(aboutQtAction)

        self.tabWidget = QTabWidget()
        self.setCentralWidget(self.tabWidget)

        self.cameraViewfinder = QCameraViewfinder()
        self.camera.setViewfinder(self.cameraViewfinder)
        self.tabWidget.addTab(self.cameraViewfinder, "Viewfinder")

        if self.camera.status() != QCamera.UnavailableStatus:
            name = self.cameraInfo.description()
            self.setWindowTitle("PySide2 Camera Example (" + name + ")")
            self.statusBar().showMessage("Starting: '" + name + "'", 5000)
            self.camera.start()
        else:
            self.setWindowTitle("PySide2 Camera Example")
            self.takePictureAction.setEnabled(False)
            self.statusBar().showMessage("Camera unavailable", 5000)
Пример #3
0
    def __init__(self):
        super(Camera, self).__init__()
        self.available_cameras = QCameraInfo.availableCameras()
        if not self.available_cameras:
            pass  # quit

        """
        self.status = QStatusBar()
        self.setStatusBar(self.status)
        """

        self.save_path = ""

        self.viewfinder = QCameraViewfinder()
        self.viewfinder.show()
        #self.setCentralWidget(self.viewfinder)

        # Set the default camera.
        self.select_camera(0)

        """
Пример #4
0
class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.available_cameras = QCameraInfo.availableCameras()
        if not self.available_cameras:
            pass #quit

        self.status = QStatusBar()
        self.setStatusBar(self.status)


        self.save_path = ""

        self.viewfinder = QCameraViewfinder()
        self.viewfinder.show()
        self.setCentralWidget(self.viewfinder)

        # Set the default camera.
        self.select_camera(0)

        # Setup tools
        camera_toolbar = QToolBar("Camera")
        camera_toolbar.setIconSize(QSize(14, 14))
        self.addToolBar(camera_toolbar)

        photo_action = QAction(QIcon(os.path.join('images', 'camera-black.png')), "Take photo...", self)
        photo_action.setStatusTip("Take photo of current view")
        photo_action.triggered.connect(self.take_photo)
        camera_toolbar.addAction(photo_action)

        change_folder_action = QAction(QIcon(os.path.join('images', 'blue-folder-horizontal-open.png')), "Change save location...", self)
        change_folder_action.setStatusTip("Change folder where photos are saved.")
        change_folder_action.triggered.connect(self.change_folder)
        camera_toolbar.addAction(change_folder_action)


        camera_selector = QComboBox()
        camera_selector.addItems([c.description() for c in self.available_cameras])
        camera_selector.currentIndexChanged.connect( self.select_camera )

        camera_toolbar.addWidget(camera_selector)


        self.setWindowTitle("NSAViewer")
        self.show()

    def select_camera(self, i):
        self.camera = QCamera(self.available_cameras[i])
        self.camera.setViewfinder(self.viewfinder)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.camera.error.connect(lambda: self.alert(self.camera.errorString()))
        self.camera.start()

        self.capture = QCameraImageCapture(self.camera)
        self.capture.error.connect(lambda i, e, s: self.alert(s))
        self.capture.imageCaptured.connect(lambda d, i: self.status.showMessage("Image %04d captured" % self.save_seq))

        self.current_camera_name = self.available_cameras[i].description()
        self.save_seq = 0

    def take_photo(self):
        timestamp = time.strftime("%d-%b-%Y-%H_%M_%S")
        self.capture.capture(os.path.join(self.save_path, "%s-%04d-%s.jpg" % (
            self.current_camera_name,
            self.save_seq,
            timestamp
        )))
        self.save_seq += 1

    def change_folder(self):
        path = QFileDialog.getExistingDirectory(self, "Snapshot save location", "")
        if path:
            self.save_path = path
            self.save_seq = 0

    def alert(self, s):
        """
        Handle errors coming from QCamera dn QCameraImageCapture by displaying alerts.
        """
        err = QErrorMessage(self)
        err.showMessage(s)
Пример #5
0
from PySide2.QtMultimedia import QCamera
from PySide2.QtMultimediaWidgets import QCameraViewfinder
import time

if __name__ == '__main__':
    camera = QCamera
    viewfinder = QCameraViewfinder()
    viewfinder.show()
    camera.setViewfinder(viewfinder)
    imageCapture = QCameraViewfinder(camera)
    camera.setCaptureMode(QCamera.CaptureStillImage)
    camera.start()
    time.sleep(10)
    camera.stop()
    imageCapture.saveGeometry()

Пример #6
0
    def __init__(self):
        super().__init__()

        # window basic properties
        self.setWindowTitle('Blue Haze')
        self.setFixedSize(cfg.UI_WIDTH, cfg.UI_HEIGHT)

        # tab widget
        self.tab_widget = QTabWidget()

        # setup group
        self.complete_session_name = None
        self.session_name = QLineEdit()
        self.video_file_path = QLineEdit()
        self.list_cameras = QComboBox()
        self.list_audio_devices = QComboBox()
        self.list_audio_devices.setDuplicatesEnabled(False)
        self.list_backing_tracks = QComboBox()
        self.PLAY_BACKING_TRACK = 'Play backing track'
        self.play_stop_backing_track_button = QPushButton(
            self.PLAY_BACKING_TRACK)

        # check if debug is on & auto set
        # session name & video file path fields
        if cfg.DEBUG:
            self.session_name.setText('test')
            self.video_file_path.setText(str(Path.home()) + '\Documents\hdi')

        # hardware
        self.bullet_bitalino_label = QLabel()
        self.bitalino_label = QLabel('Bitalino')
        self.bullet_brainbit_label = QLabel()
        self.brainbit_label = QLabel('Brainbit')
        self.bullet_realsense_label = QLabel()
        self.realsense_label = QLabel('RealSense camera')
        self.bullet_picoboard_label = QLabel()
        self.picoboard_label = QLabel('Picoboard')
        self.hardware_status = {
            'Bitalino': not cfg.HARDWARE,
            'Brainbit': not cfg.HARDWARE,
            'RealSense': not cfg.HARDWARE
        }
        self.picoboard_status = False

        # record bottom area
        self.record_stop_button = QPushButton('Record session')
        self.record_stop_button.setEnabled(not cfg.HARDWARE)
        self.recording_label = QLabel()

        # mic volume
        self.volume_slider = QSlider()
        self.volume_slider.setOrientation(Qt.Horizontal)
        self.volume_slider.setTickInterval(10)
        self.volume_slider.setMinimum(1)
        self.volume_slider.setMaximum(100)
        self.volume_slider.setValue(cfg.UI_INITIAL_MIC_VOLUME)
        self.volume_slider.valueChanged.connect(
            self.change_value_mic_volume_label)
        self.volume_slider_label = QLabel('30')

        # states
        self.recording = False

        # objects
        self.backing_track_player = PlayAudioTrack(parent=self)
        self.view_finder = QCameraViewfinder()

        # hardware setup
        self.get_list_cameras()
        self.get_list_audio_devices()
        self.get_list_backing_tracks()

        if cfg.HARDWARE:
            self.setup_hw()

        # feedback
        self.feedback = Feedback(parent=self)

        # ui setup
        self.setup_ui()

        # start the camera
        self.camera = QCamera(self.list_cameras.currentData())
        self.start_camera()

        # see
        # https://stackoverflow.com/questions/46827007/runtimeerror-this-event-loop-is-already-running-in-python
        nest_asyncio.apply()

        # record session object
        self.record_session = RecordSession(parent=self)