Пример #1
0
    def __init__(self):
        QMainWindow.__init__(self)

        if len(QCameraInfo.availableCameras()) == 0:
            QMessageBox.warning(
                self, 'Camera not found',
                'You don\'t have any cameras on your computer so you can\'t use this app...\nBuy a new camera (╯°^°)╯┻━┻',
                QMessageBox.Ok)
            exit(-1)

        self.central_widget = QWidget(self)
        self.main_grid = QGridLayout(self.central_widget)

        self.option_group = QGroupBox(None)

        self.group_grid = QGridLayout(self.option_group)

        self.addr_msg = QLabel('Database addr')
        self.camera_msg = QLabel('Camera')

        self.camera_combo = QComboBox()
        self.addr_edit = QLineEdit()

        self.camera_place = QGroupBox(None)

        self.auth_btn = QPushButton('Log in')
        self.camera_grid = QGridLayout(self.camera_place)

        self.camera_widget = QCameraViewfinder()
        self.camera_obj = QCamera(QCameraInfo.defaultCamera())

        self.veg_cfg = Config()
Пример #2
0
class Camera(QObject):
    def __init__(self, parent = QObject()):
        super(Camera, self).__init__(parent)
        print("3")
        self.cam = QCamera(QCameraInfo.defaultCamera())   #"/dev/video0".encode()
        print("4")
        self.caminfo = QCameraInfo(self.cam)
        self.camvfind = QCameraViewfinder()
        self.camvfindset = QCameraViewfinderSettings()
        self.cammode = self.cam.CaptureMode(0)
        self.camimgcap = QCameraImageCapture(self.cam)

    def iniCamera(self):
        print(self.caminfo.description())
        print(self.caminfo.availableCameras())

        for caminfo in QCameraInfo.availableCameras():
            print(caminfo.deviceName())

        if self.cam.isCaptureModeSupported(self.cammode):
            print("Capturemode supported")

    def startVid(self):
        #self.camimgcap.CaptureDestination(2)

        self.camvfind.show()

        self.cam.setViewfinder(self.camvfind)

        self.cam.setCaptureMode(self.cammode)

        self.cam.start()
Пример #3
0
 def __init__(self, parent=QObject()):
     super(Camera, self).__init__(parent)
     # chooses the system default camera
     self.cam = QCamera()
     self.caminfo = QCameraInfo(self.cam)
     self.camvfind = QCameraViewfinder()
     self.camvfindset = QCameraViewfinderSettings()
     self.recorder = QMediaRecorder(self.cam)
Пример #4
0
 def __init__(self, parent = QObject()):
     super(Camera, self).__init__(parent)
     print("3")
     self.cam = QCamera(QCameraInfo.defaultCamera())   #"/dev/video0".encode()
     print("4")
     self.caminfo = QCameraInfo(self.cam)
     self.camvfind = QCameraViewfinder()
     self.camvfindset = QCameraViewfinderSettings()
     self.cammode = self.cam.CaptureMode(0)
     self.camimgcap = QCameraImageCapture(self.cam)
Пример #5
0
 def iniCamera(self):
     cameras = QCameraInfo.availableCameras()
     for cameraInfo in cameras:
         # select the capturing device if it is available
         if (cameraInfo.description().find("Capture") is not -1):
             self.cam = QCamera(cameraInfo)
             self.caminfo = QCameraInfo(self.cam)
             self.recorder = QMediaRecorder(self.cam)
         print("Camera Chosen: " + self.caminfo.description())
     print(self.cam.supportedViewfinderFrameRateRanges())
     if self.cam.isCaptureModeSupported(QCamera.CaptureVideo):
         print("Capturemode supported")
Пример #6
0
    def start_scan(self, device: str = ''):
        """
        Scans a QR code from the given camera device.
        If no QR code is found the returned string will be empty.
        If the camera is not found or can't be opened NoCamerasFound will be raised.
        """

        self.validator = QrReaderValidatorCounted()
        self.validator.strong_count = 5  # FIXME: make this time based rather than framect based

        device_info = None

        for camera in QCameraInfo.availableCameras():
            if camera.deviceName() == device:
                device_info = camera
                break

        if not device_info:
            self.logger.info(
                'Failed to open selected camera, trying to use default camera')
            device_info = QCameraInfo.defaultCamera()

        if not device_info or device_info.isNull():
            raise NoCamerasFound(
                _("Cannot start QR scanner, no usable camera found.") +
                self._linux_pyqt5bug_msg())

        self._init_stats()
        self.qrreader_res = []
        self.validator_res = None
        self._ok_done = False
        self._error_message = None

        if self.camera:
            self.logger.info(
                "Warning: start_scan already called for this instance.")

        self.camera = QCamera(device_info)
        self.camera.setViewfinder(self.video_surface)
        self.camera.setCaptureMode(QCamera.CaptureViewfinder)

        # this operates on camera from within the signal handler, so should be a queued connection
        self.camera_sc_conn = self.camera.statusChanged.connect(
            self._on_camera_status_changed, Qt.QueuedConnection)
        self.camera.error.connect(
            self._on_camera_error
        )  # log the errors we get, if any, for debugging
        # Camera needs to be loaded to query resolutions, this tries to open the camera
        self.camera.load()
Пример #7
0
def cameraCheck(**kwargs):
    check_status = False
    if kwargs['operating_mode']['cam_path_used'] == '1':
        camera_user = kwargs['cam_user']['cam_path']
        camera_item = kwargs['cam_item']['cam_path']
    else:
        camera_user = int(kwargs['cam_user']['cam_num'])
        camera_item = int(kwargs['cam_item']['cam_num'])
    camera_device = QCamera(
    )  # You have to declare QCamera object before using QCameraInfo.availableCameras()
    camera_list = QCameraInfo.availableCameras()
    # print(camera_list)  # the result is like [<PyQt5.QtMultimedia.QCameraInfo object at 0x0000029C36641828>, <PyQt5.QtMultimedia.QCameraInfo object at 0x0000029C36641898>]
    if len(camera_list) < 2:
        # print('Camera problem happens!')
        sys.exit('Camera problem: available cameras are not enough!'
                 )  # sys.exit just throws an exception.
    else:
        # try to use cameras to see whether there is some unknown issues.
        cap0 = cv2.VideoCapture(camera_item)
        cap1 = cv2.VideoCapture(camera_user)
        ret0, frame0 = cap0.read()
        ret1, frame1 = cap1.read()
        cap0.release()
        cap1.release()
        if not (ret0 and ret1):
            sys.exit(
                'Camera problem: frame cannot be read successfully. Please take them off and then plugs them in.'
            )

    check_status = True
    return check_status
Пример #8
0
 def load_cam(self):
     self.cam_page.setLayout(self.cam_page_lay)
     self.error_cam.hide()
     self.camera = QCameraInfo.defaultCamera()
     # Проверяем, что камера сущетсвует
     # Если нет, то переключаемся на вторую вкладку
     if self.camera.isNull():
         dialog = QErrorMessage()
         dialog.setWindowTitle('Warning')
         dialog.showMessage(
             'Not enough cameras, the app will only be available in drawing mode'
         )
         dialog.exec()
         self.error_cam.show()
         self.cam_page.setEnabled(False)
         self.tabWidget.setCurrentIndex(1)
     # Если да, то на первую
     else:
         self.tabWidget.setCurrentIndex(0)
         self.camera = QCamera(self.camera)
         self.view_cam = QCameraViewfinder(self)
         self.view_cam.setMediaObject(self.camera)
         self.view_cam.setAutoFillBackground(True)
         self.camera.setViewfinder(self.view_cam)
         self.box_lay = QVBoxLayout(self)
         self.box_lay.addWidget(self.view_cam)
         self.scrolling.setLayout(self.box_lay)
         # Запускаем камеру
         self.camera.start()
         # Подвязываем кнопку к слоту со снимком
         self.bt_cam.clicked.connect(self.make_ph)
         # Можно зумить фотографию
         self.zoom.valueChanged.connect(self.zoom_pict)
Пример #9
0
    def __init__(self, *args, **kwargs):
        super(CMainWindow, self).__init__(*args, **kwargs)
        self.oc_camera = None
        self.l_cameras = QCameraInfo.availableCameras()
        if len(self.l_cameras) == 0:
            self.fatal_error("No cameras found!")

        # Top tool-bar
        self.oc_toolbar = QtWidgets.QToolBar("Video source selector")
        self.oc_toolbar.setMovable(False)

        lbl = QtWidgets.QLabel("Select video source:")
        self.oc_toolbar.addWidget(lbl)

        camera_selector = QtWidgets.QComboBox()
        camera_selector.addItems([ "[ %i ] %s" % (i_idx, oc_cam.description()) for i_idx, oc_cam in enumerate(self.l_cameras)])
        camera_selector.currentIndexChanged.connect( self.start_preview )

        self.oc_toolbar.addWidget(camera_selector)
        self.oc_toolbar.layout().setSpacing(5)
        self.oc_toolbar.layout().setContentsMargins(5, 5, 5, 5)
        self.addToolBar(self.oc_toolbar)

        # Central part (video frame)
        self.oc_viewfinder = QCameraViewfinder()
        self.setCentralWidget(self.oc_viewfinder)

        # Bottom status bar
        self.status = QtWidgets.QStatusBar()
        self.setStatusBar(self.status)

        self.setWindowTitle("CamView")
        self.start_preview(0)
Пример #10
0
    def CamerasDetect(self):
        # myDebug(self.__class__.__name__, get_current_function_name())
        detects_usb = QCameraInfo.availableCameras()
        if not CameraController.isMindVisionDetectedOn and mvsdk:
            CameraController.isMindVisionDetectedOn = True
            threading.Thread(target=CameraController.CamerasMindVisionDetect_thread_func).start()
        # detects_MindVision = Common.mvsdk.CameraEnumerateDevice()
        detects_MindVision = CameraController.detects_MindVision
        detects_usb_size = len(detects_usb)
        detects_MindVision_size = 0
        if detects_MindVision:
            detects_MindVision_size = len(detects_MindVision)
        isChanged = False
        if len(self.mCameraAvailable) == detects_usb_size + detects_MindVision_size:
            for i, data in enumerate(detects_usb):
                if self.mCameraAvailable[i] != data:
                    isChanged = True
                    self.mCameraAvailable[i] = data
            if detects_MindVision:
                for i, data in enumerate(detects_MindVision):
                    if self.mCameraAvailable[i+detects_usb_size] != data:
                        isChanged = True
                        self.mCameraAvailable[i+detects_usb_size] = data

        else:
            isChanged = True
            self.mCameraAvailable = []
            for data in detects_usb:
                self.mCameraAvailable.append(data)
            if detects_MindVision:
                for data in detects_MindVision:
                    self.mCameraAvailable.append((data))

        if isChanged:
            self.signalCamerasChanged.emit()
Пример #11
0
    def __iniCamera(self):  ##创建 QCamera对象
        camInfo = QCameraInfo.defaultCamera()  #获取缺省摄像头,QCameraInfo
        self.ui.comboCamera.addItem(camInfo.description())  #摄像头描述
        self.ui.comboCamera.setCurrentIndex(0)

        self.camera = QCamera(camInfo)  #创建摄像头对象
        self.camera.setViewfinder(self.ui.viewFinder)  #设置取景框预览
        ##          camera.setCaptureMode(QCamera.CaptureViewfinder) #预览
        self.camera.setCaptureMode(QCamera.CaptureStillImage)  #设置为抓图
        ##          camera.setCaptureMode(QCamera.CaptureVideo)

        mode = QCamera.CaptureStillImage
        supported = self.camera.isCaptureModeSupported(mode)
        self.ui.checkStillImage.setChecked(supported)  #支持拍照

        supported = self.camera.isCaptureModeSupported(QCamera.CaptureVideo)
        self.ui.checkVideo.setChecked(supported)  #支持视频录制

        supported = self.camera.exposure().isAvailable()
        self.ui.checkExposure.setChecked(supported)  #支持曝光补偿

        supported = self.camera.focus().isAvailable()
        self.ui.checkFocus.setChecked(supported)  #支持变焦

        self.camera.stateChanged.connect(self.do_cameraStateChanged)
    def __init__(self, background_color):
        QWidget.__init__(self)

        self.scene = QGraphicsScene(self)
        self.scene.setBackgroundBrush(QBrush(background_color))
        self.graphics_view = QGraphicsView(self.scene)
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setFrameStyle(0)
        self.graphics_view.setStyleSheet(
            "QGraphicsView {background: transparent; border: 3px; outline: none;}"
        )
        self.graphics_view.scale(-1,
                                 1)  # this make live video from camero mirror.
        self.video_item = QGraphicsVideoItem()
        self.scene.addItem(self.video_item)

        self.layout = QVBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.graphics_view)

        self.available_cameras = QCameraInfo.availableCameras()

        # Set the default camera.
        self.select_camera(0)
Пример #13
0
    def __init__(self, oc_global_cfg, *args, **kwargs):
        super(CMainWindow, self).__init__(*args, **kwargs)

        self.oc_global_cfg = oc_global_cfg
        self.f_initial_frame_rate = float(
            self.oc_global_cfg['general']['initial_frame_rate'])

        self.oc_frame_cap_thread = None
        self.win_preview = None

        # check if we have any cameras before doing anything else
        self.l_cameras = QCameraInfo.availableCameras()
        if len(self.l_cameras) == 0:
            self.fatal_error("No cameras found!")

        self.lbl_video_source = QtWidgets.QLabel("Select video source:")

        self.cbox_cam_selector = QtWidgets.QComboBox()
        self.cbox_cam_selector.addItems([
            "[ %i ] %s" % (i_idx, oc_cam.description())
            for i_idx, oc_cam in enumerate(self.l_cameras)
        ])

        self.btn_preview = QtWidgets.QPushButton("Preview")
        self.btn_preview.clicked.connect(self.__cb_on_btn_preview)

        layout = QtWidgets.QGridLayout()
        layout.addWidget(self.lbl_video_source, 0, 0, 1, 1)
        layout.addWidget(self.cbox_cam_selector, 1, 0, 1, 1)
        layout.addWidget(self.btn_preview, 1, 1, 1, 1)

        self.setLayout(layout)
        self.setMinimumWidth(350)
        self.setWindowTitle("Video Source Selector")
Пример #14
0
 def openCameras(self):
     self.setBScale(False)
     self.setBDraw(False)
     for info in QCameraInfo.availableCameras():
         self.m_camera.append(info)
     if len(self.m_camera) < 2:
         messageBox_info('please get your binocular cameras', self)
     else:
         self.camerasSelectDialog = QDialog(self)
         self.camerasSelectDialog.setMinimumWidth(950)
         self.camerasSelectDialog.setWindowTitle('Select your disired cameras')
         camerasSelectDialogLayout = QGridLayout()
         leftLabel = QLabel('left')
         rightLabel = QLabel('right')
         leftCameraButtonGroup = QButtonGroup(self.camerasSelectDialog)
         rightCameraButtonGroup = QButtonGroup(self.camerasSelectDialog)
         camerasSelectDialogLayout.addWidget(leftLabel, 1, 0)
         camerasSelectDialogLayout.addWidget(rightLabel, 2, 0)
         for i in range(len(self.m_camera)):
             capLabel = QLabel()
             capLabel.setFixedSize(400, 300)
             cap = cv2.VideoCapture(i)
             _, then_cap = cap.read()
             cap.release()
             cv2.destroyAllWindows()
             capLabel.setPixmap(QPixmap.fromImage(npndarray2qimage(then_cap)))
             camerasSelectDialogLayout.addWidget(capLabel, 0, i+1)
             indexStr = 'Index: %d'%i
             optionalLeftCameraRadioButton = QRadioButton(indexStr)
             leftCameraButtonGroup.addButton(optionalLeftCameraRadioButton, i)
             optionalRightCameraRadioButton = QRadioButton(indexStr)
             rightCameraButtonGroup.addButton(optionalRightCameraRadioButton, i)
             if i == 0:
                 optionalLeftCameraRadioButton.setChecked(True)
                 optionalRightCameraRadioButton.setChecked(True)
             camerasSelectDialogLayout.addWidget(optionalLeftCameraRadioButton, 1, i+1)
             camerasSelectDialogLayout.addWidget(optionalRightCameraRadioButton, 2, i+1)
         button = QDialogButtonBox(self.camerasSelectDialog)
         button.addButton('OK', QDialogButtonBox.YesRole)
         button.addButton('Cancel', QDialogButtonBox.NoRole)
         button.accepted.connect(self.camerasSelectDialog.accept)
         button.rejected.connect(self.camerasSelectDialog.reject)
         camerasSelectDialogLayout.addWidget(button, 3, 0, 1, -1)
         self.camerasSelectDialog.setLayout(camerasSelectDialogLayout)
         res = self.camerasSelectDialog.exec_()
         if res == QDialog.Accepted:
             if self.leftCameraId > -1:
                 self.left_cap.release()
             if self.rightCameraId > -1:
                 self.right_cap.release()
             cv2.destroyAllWindows()
             self.leftCameraId = leftCameraButtonGroup.checkedId()
             self.rightCameraId = rightCameraButtonGroup.checkedId()
             self.cfg.set('binocular_cameras', 'leftCameraId', str(self.leftCameraId))
             self.cfg.set('binocular_cameras', 'rightCameraId', str(self.rightCameraId))
             self.cfg.write(open('SWQT.ini', 'w'))
             self.left_cap = cv2.VideoCapture(self.leftCameraId)
             self.right_cap = cv2.VideoCapture(self.rightCameraId)
     self.m_camera.clear()
Пример #15
0
    def setupWindows(self):
        """
        Set up QMdiArea parent and subwindows.
        Add available cameras on local system as items to 
        list widget.
        """
        # Create images directory if it does not already exist
        path = 'images'
        if not os.path.exists(path):
            os.makedirs(path)

        # Set up list widget that will display identified
        # cameras on your computer.
        picture_label = QLabel("Press 'Spacebar' to take pictures.")
        camera_label = QLabel("Available Cameras")
        self.camera_list_widget = QListWidget()
        self.camera_list_widget.setAlternatingRowColors(True)

        # Add availableCameras to a list to be displayed in
        # list widget. Use QCameraInfo() to list available cameras.
        self.cameras = list(QCameraInfo().availableCameras())
        for camera in self.cameras:
            self.list_item = QListWidgetItem()
            self.list_item.setText(camera.deviceName())
            self.camera_list_widget.addItem(self.list_item)

        # Create button that will allow user to select camera
        choose_cam_button = QPushButton("Select Camera")
        choose_cam_button.clicked.connect(self.selectCamera)

        # Create child widgets and layout for camera controls subwindow
        controls_gbox = QGroupBox()
        controls_gbox.setTitle("Camera Controls")

        v_box = QVBoxLayout()
        v_box.addWidget(picture_label, alignment=Qt.AlignCenter)
        v_box.addWidget(camera_label)
        v_box.addWidget(self.camera_list_widget)
        v_box.addWidget(choose_cam_button)

        controls_gbox.setLayout(v_box)

        controls_sub_window = QMdiSubWindow()
        controls_sub_window.setWidget(controls_gbox)
        controls_sub_window.setAttribute(Qt.WA_DeleteOnClose)

        # Create view finder subwindow
        self.view_finder_window = QMdiSubWindow()
        self.view_finder_window.setWindowTitle("Camera View")
        self.view_finder_window.setAttribute(Qt.WA_DeleteOnClose)

        # Create QMdiArea widget to manage subwindows
        mdi_area = QMdiArea()
        mdi_area.tileSubWindows()
        mdi_area.addSubWindow(self.view_finder_window)
        mdi_area.addSubWindow(controls_sub_window)

        # Set mdi_area widget as the central widget of main window
        self.setCentralWidget(mdi_area)
Пример #16
0
 def get_available_cameras():
     qcameras = QCameraInfo.availableCameras()
     res = []
     for cam in qcameras:
         # pretty ugly hack...
         if cam.description().startswith("DMK"):
             res.append(cam)
     return res
Пример #17
0
    def initimplement(self):
        """
        初始化实现端口
        :return: ui
        """
        camInfo = QCameraInfo(self.camera)
        if camInfo.defaultCamera().isNull():
            QMessageBox.warning(self, 'Warning', 'No available camera!',
                                QMessageBox.Ok)
            return -1
        else:
            self.ui.caputurePhoto.setText(camInfo.description())
            self.camera.setViewfinder(self.ui.cameraShow)
            self.camera.setCaptureMode(QCamera.CaptureStillImage)
            self.camera.load()
            resolution = self.camera.supportedViewfinderResolutions()
            if len(resolution) != 0:
                if QSize(640, 480) in resolution:
                    self.viewsetting.setResolution(QSize(640, 480))
                elif QSize(640, 360) in resolution:
                    self.viewsetting.setResolution(QSize(640, 360))
                else:
                    self.viewsetting.setResolution(resolution[0])
                self.camera.setViewfinderSettings(self.viewsetting)

            # ------------------------------Note--------------------------------
            # 此种方法利用摄像头准备捕捉图像的状态来进行捕捉图像,readyForCapture
            # 为true时,才进行捕捉图像,详见下面捕捉函数槽函数。这种方法将进行不
            # 停的捕捉,将每次捕捉的相邻图像进行图像相似度判断。当图像相似度低于
            # 阈值时,认定为新图像,才进行OCR识别。否则仅捕捉图像而不进行识别。当
            # 然捕捉图像速度过于太快时,可以用定时器,每隔0.5秒,去检查readyFor
            # Capture状态位,进而有效控制程序资源。
            # 本应用中采用按键捕捉方式,非自动,详见下面按键捕捉事件
            # ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
            # self.imageCapture.readyForCaptureChanged.connect(self.captureimage)

            self.camera.start()

        self.ui.caputurePhoto.setScaledContents(True)

        self.imageCapture.setCaptureDestination(
            QCameraImageCapture.CaptureToBuffer)

        self.imageCapture.imageCaptured.connect(self.displayimage)

        self.ui.captureBtn.clicked.connect(self.openDlg)
Пример #18
0
    def swapcamera(self):
        cameras = QCameraInfo.availableCameras()
        if self.current_camera_index + 1 == len(cameras):
            self.current_camera_index = 0
        else:
            self.current_camera_index += 1

        self.start(self.current_camera_index)
Пример #19
0
    def iniCamera(self):
        print(self.caminfo.description())
        print(self.caminfo.availableCameras())

        for caminfo in QCameraInfo.availableCameras():
            print(caminfo.deviceName())

        if self.cam.isCaptureModeSupported(self.cammode):
            print("Capturemode supported")
Пример #20
0
 def __initCamera(self):
     camInfo = QCameraInfo.defaultCamera()
     self.camera = QCamera(camInfo)
     self.camera2 = QCamera(camInfo)
     self.camera.setViewfinder(self._ui.widget)
     self.camera2.setViewfinder(self._ui.widget_2)
     self.camera.setCaptureMode(
         QCamera.CaptureStillImage)  #captureviewfinder
     self.camera2.setCaptureMode(QCamera.CaptureStillImage)
Пример #21
0
    def setupUi(self):
        """
        设置UI界面
        :return:
        """
        self.resize(600, 600)

        m_camer = QCamera()
        m_ImageCapture = QCameraImageCapture(m_camer)
        m_camerinfo = QCameraInfo()
Пример #22
0
    def init_camera(self):
        cameras = QCameraInfo.availableCameras()
        for cameraInfo in cameras:
            # select the capturing device if it is available
            if cameraInfo.description().find("Capture") is not -1:
                self.cam = QCamera(cameraInfo)
                self.caminfo = QCameraInfo(self.cam)
                self.recorder = QMediaRecorder(self.cam)
            print("Camera Chosen: " + self.caminfo.description())
        print(self.cam.supportedViewfinderFrameRateRanges())
        self.cam.setCaptureMode(QCamera.CaptureStillImage)
        if self.cam.isCaptureModeSupported(QCamera.CaptureStillImage):
            print("Capturemode supported")
        self.cam.load()
        self.cam.setViewfinder(self.camvfind)
        self.cam.start()

        self.imageCapture = QCameraImageCapture(self.cam)
        self.imageCapture.setCaptureDestination(
            QCameraImageCapture.CaptureToBuffer)
Пример #23
0
    def initValues(self):
        self.addr_edit.setText(self.veg_cfg.get_db_addr())
        self.camera_obj.setCaptureMode(QCamera.CaptureStillImage)

        if self.veg_cfg.get_debug() == True:
            self.group_grid.addWidget(self.addr_msg, 0, 0, 1, 2)
            self.group_grid.addWidget(self.camera_msg, 1, 0, 1, 2)

            self.addr_edit.setAlignment(Qt.AlignRight)
            self.group_grid.addWidget(self.addr_edit, 0, 2, 1, 5)

            for i in QCameraInfo.availableCameras():
                self.camera_combo.addItem(i.deviceName())
            self.camera_combo.setCurrentText(
                QCameraInfo.defaultCamera().deviceName())
            self.group_grid.addWidget(self.camera_combo, 1, 2, 1, 5)

            self.option_group.setTitle('Option')
            self.main_grid.addWidget(self.option_group, 0, 0, 2, 5)
        else:
            self.option_group.hide()
Пример #24
0
class Camera(QObject):
    def __init__(self, parent=QObject()):
        super(Camera, self).__init__(parent)
        # chooses the system default camera
        self.cam = QCamera()
        self.caminfo = QCameraInfo(self.cam)
        self.camvfind = QCameraViewfinder()
        self.camvfindset = QCameraViewfinderSettings()
        self.recorder = QMediaRecorder(self.cam)

    def iniCamera(self):
        cameras = QCameraInfo.availableCameras()
        for cameraInfo in cameras:
            # select the capturing device if it is available
            if (cameraInfo.description().find("Capture") is not -1):
                self.cam = QCamera(cameraInfo)
                self.caminfo = QCameraInfo(self.cam)
                self.recorder = QMediaRecorder(self.cam)
            print("Camera Chosen: " + self.caminfo.description())
        print(self.cam.supportedViewfinderFrameRateRanges())
        if self.cam.isCaptureModeSupported(QCamera.CaptureVideo):
            print("Capturemode supported")

    def startVid(self):
        self.cam.load()
        # self.camvfind.show()
        self.cam.setViewfinder(self.camvfind)
        self.cam.setCaptureMode(QCamera.CaptureVideo)
        self.cam.start()

        audio = QAudioEncoderSettings()
        audio.setCodec("audio/amr")
        audio.setQuality(QtMultimedia.QMultimedia.NormalQuality)
        video = QVideoEncoderSettings()
        # video.setCodec("video/mp4")
        video.setQuality(QtMultimedia.QMultimedia.NormalQuality)
        video.setResolution(1920, 1080)
        video.setFrameRate(30.0)
        # self.recorder.setAudioSettings(audio)
        self.recorder.setVideoSettings(video)
        self.recorder.setContainerFormat("mp4")

    def startRecording(self, filename):
        directory = os.path.abspath(str(os.getcwd()))
        abs_path = os.path.join(directory, filename)
        self.recorder.setOutputLocation(QUrl(abs_path))
        self.recorder.record()

    def stopRecording(self):
        self.recorder.stop()

    def getViewFinder(self):
        return self.camvfind
Пример #25
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("/Users/thethelafaltein/PycharmProjects/ResNetApplication/res/img/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("Object classifier")
            self.takePictureAction.setEnabled(False)
            self.statusBar().showMessage("Camera unavailable", 5000)
Пример #26
0
    def start(self, dev=1):
        if self.camera:
            self.camera.stop()
        cameras = QCameraInfo.availableCameras()
        self.camera = QCamera(cameras[dev])
        self.camera.setViewfinder(self.viewfinder)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.camera.start()

        self.camera_capture = QCameraImageCapture(self.camera)
        self.camera_capture.setCaptureDestination(
            QCameraImageCapture.CaptureToBuffer)
        self.camera_capture.imageCaptured.connect(self.imageCaptured)
Пример #27
0
 def __init__(self):
     super().__init__()
     self.cams: Dict[str, QCamera] = {}
     self.__cam_image_captures: Dict[str, QCameraImageCapture] = {}
     self.__fetch_cam()
     self.selected_cam_names = []
     try:
         default_camera_name = QCameraInfo.defaultCamera().description()
         if default_camera_name is not '':
             self.selected_cam_names.append(default_camera_name)
     # TODO: Find correct error by using the computer which has no default camera
     except Exception:
         print('No default camera')
Пример #28
0
 def init_camera_and_capture(self) -> bool:
     available_cameras = QCameraInfo.availableCameras()
     if not available_cameras:
         return False
     self.camera = self.create_camera(available_cameras, 0,
                                      self.cameraViewfinder,
                                      self.error_camera)
     self.capture = self.create_capture(self.camera,
                                        self.process_image_on_threadpool,
                                        self.error_camera)
     if self.camera.isAvailable():
         self.camera.start()
     return True
Пример #29
0
def _find_camera_info(requested_device_name):
    if requested_device_name is None or requested_device_name == "":
        camera = QCameraInfo.defaultCamera()
    else:
        matching_cameras = [
            c for c in QCameraInfo.availableCameras()
            if c.deviceName() == requested_device_name
        ]
        try:
            camera = one(matching_cameras)
        except ValueError as e:
            raise ValueError(
                "Multiple cameras found with requested device name: "
                f"{requested_device_name}") from e
        except IndexError as e:
            available_cameras = ", ".join(
                c.deviceName() for c in QCameraInfo.availableCameras())
            raise ValueError("No camera found with requested device name: "
                             f"{requested_device_name}, available devices: "
                             f"{available_cameras}") from e

    logging.info("Found QCamera: %s", camera.deviceName())
    return camera
Пример #30
0
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.ui = Ui_CameraDialog()
        self.ui.setupUi(self)

        self.ui.libraryButton.clicked.connect(self.choose_library_files)

        settings = QSettings("Fringes", "Fringes")

        zwo_library_path = settings.value("zwo_library_path")
        if zwo_library_path is None:
            zwo_library_path = self.get_zwo_library_path()
            settings.setValue("zwo_library_path", zwo_library_path)

        self.current_camera = None

        self.available_cameras = []
        try:
            ZwoCamera.init_library(zwo_library_path)
            for num in ZwoCamera.get_available_cameras():
                self.available_cameras.append(
                    self.Available_Camera(name="ZWO camera #{}".format(num),
                                          class_=ZwoCamera,
                                          kwargs=dict(cam_number=num)))
        except (zwoasi.ZWO_Error, OSError) as err:
            qDebug(str(err))

        qcameras = QCameraInfo.availableCameras()
        try:
            tiscameras = TisCamera.get_available_cameras()
        except NameError:
            qDebug("Unable to open TIS camera interface.")
            tiscameras = []
        for device in qcameras:
            if device in tiscameras:
                self.available_cameras.append(
                    self.Available_Camera(name=device.description(),
                                          class_=TisCamera,
                                          kwargs=dict(device=device)))
            elif not device.description().startswith("ASI"):
                self.available_cameras.append(
                    self.Available_Camera(name=device.description(),
                                          class_=QtCamera,
                                          kwargs=dict(device=device)))
        names = [cam.name for cam in self.available_cameras]
        model = QStringListModel(names)
        self.ui.listView.setModel(model)
Пример #31
0
    def __init__(self, background_color):
        QWidget.__init__(self)

        self.scene = QGraphicsScene(self)
        self.scene.setBackgroundBrush(QBrush(background_color))
        self.graphics_view = QGraphicsView(self.scene)
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setFrameStyle(0)
        self.graphics_view.setStyleSheet("QGraphicsView {background: transparent; border: 3px; outline: none;}")
        self.graphics_view.scale(-1, 1) # this make live video from camero mirror.
        self.video_item = QGraphicsVideoItem()
        self.scene.addItem(self.video_item)

        self.layout = QVBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.graphics_view)

        self.available_cameras = QCameraInfo.availableCameras()

        # Set the default camera.
        self.select_camera(0)
Пример #32
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setSubTitle(self.tr("<h2>Create Your Avatar</h2>"))

        vlayout = QVBoxLayout(self)

        labelLayout = QHBoxLayout()
        labelImage = QLabel()
        labelImage.setPixmap(QPixmap(":/data/images/preferences-desktop-personal.png"))
        labelImage.setMaximumSize(64, 64)
        labelLayout.addWidget(labelImage)

        label = QLabel(self)
        label.setWordWrap(True)
        label.setText(self.tr("<p>This screen helps you set your <strong>user picture</strong>. You can either choose an image from a \
        file or you can capture an image from your camera. Select an option from the <strong>options</strong> menu.</p>"))
        labelLayout.addWidget(label)
        vlayout.addLayout(labelLayout)

        vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred))

        centerLayout = QHBoxLayout()
        centerLayout.addItem(QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred))

        groupBox = QGroupBox()
        groupBox.setMaximumWidth(500)
        vlayout2 = QVBoxLayout(groupBox)
        hlayout = QHBoxLayout()

        comboBox = QComboBox()
        comboBox.setMinimumWidth(250)
        comboBox.addItems([self.tr("Options"), self.tr("Choose an image...")])

        #Camera control
        self.cameraInfo = None
        self.camera = None
        self.cameraImageCapture = None
        cameras = QCameraInfo.availableCameras()

        if len(cameras):
            self.cameraInfo = cameras[0]
            comboBox.addItem(self.tr("Camera ") + self.cameraInfo.deviceName())
            self.camera = QCamera(self.cameraInfo)
            self.camera.setCaptureMode(QCamera.CaptureStillImage)
            self.cameraImageCapture = QCameraImageCapture(self.camera)
            self.imageProcessing = self.camera.imageProcessing()
            self.imageProcessing.setWhiteBalanceMode(QCameraImageProcessing.WhiteBalanceSunlight)
            self.imageProcessing.setContrast(1)
            self.imageProcessing.setSaturation(1)
            self.imageProcessing.setSharpeningLevel(1)
            self.imageProcessing.setDenoisingLevel(1)
            #self.imageProcessing.setColorFilter(QCameraImageProcessing.ColorFilterWhiteboard) #FIXME Qt5.5
            self.cameraImageCapture.imageCaptured.connect(self.imageCapture)

        self.buttonCam = QPushButton()
        self.buttonCam.setText(self.tr("Capture"))
        self.buttonCam.setIcon(QIcon(":/data/images/webcamreceive.png"))
        self.buttonCam.setVisible(False)

        self.buttonReplay = QPushButton()
        self.buttonReplay.setText(self.tr("Recapture"))
        self.buttonReplay.setIcon(QIcon(":/data/images/view-refresh.png"))
        self.buttonReplay.setVisible(False)

        hlayout.addWidget(comboBox)
        hlayout.addItem(QSpacerItem(300, 20, QSizePolicy.Preferred, QSizePolicy.Preferred))
        hlayout.addWidget(self.buttonCam)
        hlayout.addWidget(self.buttonReplay)

        vlayout2.addLayout(hlayout)

        hlayout2 = QHBoxLayout()

        hlayout2.addItem(QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred))

        self.cameraLabel = QLabel()
        self.cameraLabel.setScaledContents(True)
        self.cameraLabel.setStyleSheet("background-color: black;")
        self.cameraLabel.setMinimumSize(320, 240)
        self.cameraLabel.setMaximumSize(320, 240)

        self.cameraView = QCameraViewfinder()
        self.cameraView.setMaximumSize(320,240)
        self.cameraView.setMinimumSize(320,240)
        self.cameraView.hide()

        hlayout2.addWidget(self.cameraLabel)
        hlayout2.addWidget(self.cameraView)

        hlayout2.addItem(QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred))
        vlayout2.addLayout(hlayout2)

        centerLayout.addWidget(groupBox)
        centerLayout.addItem(QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred))
        vlayout.addLayout(centerLayout)
        vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred))

        comboBox.currentIndexChanged.connect(self.avatarSelect)
        self.buttonCam.clicked.connect(self.buttonCamChanged)
        self.buttonReplay.clicked.connect(self.buttonReplayChanged)

        self.userAvatar = None