栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python Opencv暴力获取所有相机

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Opencv暴力获取所有相机

没找到opencv如何一次性获取所有相机的办法,因此用了一种很流氓的办法:打开所有相机
因为opencv的相机列表是用number来访问的,所以只要从0开始遍历打开相机,只要打不开相机就停止
这个代码是应用在pyqt上的,点击获取按钮,然后会将数组添加到combobox列表中,就可以查看并选择相机了

from PyQt5 import QtCore, QtWidgets, QtGui, QtMultimedia
import cv2
from PyQt5.QtMultimedia import QMediaContent
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class MainUi(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainUi, self).__init__(parent)
        pass
        
    def getCameraList(self):
        """
        获取相机列表
        """
        num = 10
        try:
            index_list = []
            for i in range(0, num):
                cap = cv2.VideoCapture(i)
                if cap.isOpened():
                    index_list.append(i)
                    cap.release()
                else:
                    break
        except:
            msg_box = QtWidgets.QMessageBox
            msg_box.critical(self, 'error', '读取摄像机列表失败', msg_box.Ok)
            return -1
        if len(index_list) <= 0:
            msg_box = QtWidgets.QMessageBox
            msg_box.critical(self, 'error', '读取摄像机列表失败', msg_box.Ok)
            return -1
        return len(index_list)
        
    def button_check_camera_click(self):
        """
        点击按钮检查相机
        """
        self.camera_clear()
        index = self.getCameraList()
        if index == -1:
            return
        self.button_open_camera.setEnabled(True) # 打开相机按钮转为可触状态
        self.combobox_select_camera.addItems(list(map(lambda x: str(x) + '号摄像头', range(0, index)))) # 添加相机编号到Combobox中
        
	def button_open_camera_click(self):
        """
        打开选中的相机
        """
        if self.button_open_camera.text() == '关闭相机':
            self.button_open_camera.setText('打开相机')
            cv2.destroyAllWindows()
            if self.cap.isOpened():
                self.cap.release()
        else:
            try:
                CAM_NUM = int(self.combobox_select_camera.currentIndex())
                flag = self.cap.open(CAM_NUM)
                if not flag:
                    msg = QtWidgets.QMessageBox.warning(self, "Warning", "请检测相机与电脑是否连接正确",
                                                        buttons=QtWidgets.QMessageBox.Ok,
                                                        defaultButton=QtWidgets.QMessageBox.Ok)
                    return
                self.button_open_camera.setText('关闭相机')
                self.show_camera()
            except:
                return
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号