python利用pyqt5和opencv打开电脑摄像头并进行拍照

效果如下:

代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import cv2from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QPalette, QBrush, QPixmap
import os
import timeclass Ui_MainWindow(QtWidgets.QWidget):def __init__(self, parent=None):super(Ui_MainWindow, self).__init__(parent)# self.setBac# self.face_recong = face.Recognition()self.timer_camera = QtCore.QTimer()self.cap = cv2.VideoCapture()self.CAM_NUM = 0self.set_ui()self.slot_init()self.__flag_work = 0self.x = 0self.count = 0def set_ui(self):font = QtGui.QFont()font.setFamily("kaiti")font.setPointSize(18)self.textBrowser = QtWidgets.QLabel("PCB板原件检测系统")self.textBrowser.setAlignment(Qt.AlignCenter)self.textBrowser.setFont(font)# self.label.setText(_translate("MainWindow", "TextLabel"))self.mm_layout = QVBoxLayout()self.l_down_widget = QtWidgets.QWidget()self.__layout_main = QtWidgets.QHBoxLayout()self.__layout_fun_button = QtWidgets.QVBoxLayout()self.__layout_data_show = QtWidgets.QVBoxLayout()self.button_open_camera = QtWidgets.QPushButton(u'打开相机')self.button_cap = QtWidgets.QPushButton(u'拍照')self.canshu = QtWidgets.QPushButton(u'参数设置')self.det = QtWidgets.QPushButton(u'图片检测')fontx = QtGui.QFont()fontx.setFamily("kaiti")fontx.setPointSize(16)# Button 的颜色修改button_color = [self.button_open_camera, self.button_cap, self.canshu, self.det]for i in range(4):button_color[i].setFont(fontx)button_color[i].setStyleSheet("QPushButton{color:black}""QPushButton:hover{color:red}""QPushButton{background-color:rgb(78,255,255)}""QPushButton{border:2px}""QPushButton{border-radius:10px}""QPushButton{padding:2px 4px}")self.button_open_camera.setMinimumHeight(50)self.button_cap.setMinimumHeight(50)self.canshu.setMinimumHeight(50)self.det.setMinimumHeight(50)# move()方法移动窗口在屏幕上的位置到x = 300,y = 300坐标。self.move(500, 500)# 信息显示self.label_show_camera = QtWidgets.QLabel()self.label_move = QtWidgets.QLabel()self.label_move.setFixedSize(100, 100)self.label_show_camera.setFixedSize(641, 481)# self.label_show_camera.setFixedSize(1300, 481)self.label_show_camera.setAutoFillBackground(False)self.__layout_fun_button.addWidget(self.button_open_camera)self.__layout_fun_button.addWidget(self.button_cap)self.__layout_fun_button.addWidget(self.canshu)self.__layout_fun_button.addWidget(self.det)self.__layout_fun_button.addWidget(self.label_move)# 添加一个右侧的组件self.right_widget = QWidget()self.right_widget_layout = QHBoxLayout()self.cap_label = QLabel()self.cap_label.setFixedSize(641, 481)# self.label_show_camera.setFixedSize(1300, 481)self.cap_label.setAutoFillBackground(False)self.right_widget_layout.addWidget(self.label_show_camera)self.right_widget_layout.addWidget(self.cap_label)self.right_widget.setLayout(self.right_widget_layout)self.__layout_main.addWidget(self.right_widget)self.__layout_main.addLayout(self.__layout_fun_button)# self.__layout_main.addWidget(self.label_show_camera)# self.setLayout(self.__layout_main)self.l_down_widget.setLayout(self.__layout_main)self.mm_layout.addWidget(self.textBrowser)self.mm_layout.addWidget(self.l_down_widget)self.setLayout(self.mm_layout)self.label_move.raise_()self.setWindowTitle(u'PCB板元件检测系统')# self.setStyleSheet("#MainWindow{border-image:url(DD.png)}")'''# 设置背景图片palette1 = QPalette()palette1.setBrush(self.backgroundRole(), QBrush(QPixmap('background.jpg')))self.setPalette(palette1)'''def slot_init(self):self.button_open_camera.clicked.connect(self.button_open_camera_click)self.timer_camera.timeout.connect(self.show_camera)self.button_cap.clicked.connect(self.capx)def button_open_camera_click(self):if self.timer_camera.isActive() == False:flag = self.cap.open(self.CAM_NUM,  cv2.CAP_DSHOW)if flag == False:msg = QtWidgets.QMessageBox.warning(self, u"Warning", u"请检测相机与电脑是否连接正确",buttons=QtWidgets.QMessageBox.Ok,defaultButton=QtWidgets.QMessageBox.Ok)# if msg==QtGui.QMessageBox.Cancel:#                     passelse:self.timer_camera.start(30)self.button_open_camera.setText(u'关闭相机')else:self.timer_camera.stop()self.cap.release()self.label_show_camera.clear()self.button_open_camera.setText(u'打开相机')def show_camera(self):flag, self.image = self.cap.read()# face = self.face_detect.align(self.image)# if face:#     passshow = cv2.resize(self.image, (640, 480))show = cv2.cvtColor(show, cv2.COLOR_BGR2RGB)# print(show.shape[1], show.shape[0])# show.shape[1] = 640, show.shape[0] = 480self.showImage = QtGui.QImage(show.data, show.shape[1], show.shape[0], QtGui.QImage.Format_RGB888)self.label_show_camera.setPixmap(QtGui.QPixmap.fromImage(self.showImage))# self.x += 1# self.label_move.move(self.x,100)# if self.x ==320:#     self.label_show_camera.raise_()def capx(self):FName = fr"images\cap{time.strftime('%Y%m%d%H%M%S', time.localtime())}"# cv2.imwrite(FName + ".jpg", self.image)print(FName)# self.label_2.setPixmap(QtGui.QPixmap.fromImage(self.image))self.cap_label.setPixmap(QtGui.QPixmap.fromImage(self.showImage))self.showImage.save(FName + ".jpg", "JPG", 100)def closeEvent(self, event):ok = QtWidgets.QPushButton()cacel = QtWidgets.QPushButton()msg = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, u"关闭", u"是否关闭!")msg.addButton(ok, QtWidgets.QMessageBox.ActionRole)msg.addButton(cacel, QtWidgets.QMessageBox.RejectRole)ok.setText(u'确定')cacel.setText(u'取消')# msg.setDetailedText('sdfsdff')if msg.exec_() == QtWidgets.QMessageBox.RejectRole:event.ignore()else:#             self.socket_client.send_command(self.socket_client.current_user_command)if self.cap.isOpened():self.cap.release()if self.timer_camera.isActive():self.timer_camera.stop()event.accept()if __name__ == "__main__":App = QApplication(sys.argv)ex = Ui_MainWindow()# ex.setStyleSheet("#MainWindow{border-image:url(DD.png)}")ex.show()sys.exit(App.exec_())

python利用pyqt5和opencv打开电脑摄像头并进行拍照相关推荐

  1. Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI

    现在NBA联赛也进行到半决赛了,我们怎么样才能以更快的方法获取NBA的数据呢?这里我们就自己来做一个数据播报的程序 文章目录 制作NBA数据爬虫 捋顺思路 编写代码 NBAReporter.py NB ...

  2. python利用PyQt5和QTDesginer开发GUI应用(二)、股票查询工具

    python应用GUI开发系列: python利用PyQt5和QTDesginer开发GUI应用(一).环境准备及demo -------------------------------------- ...

  3. Python 利用PyQt5写一个简易的串口助手

    学习单片机,STM32好长时间了,也做了一些项目,一直想利用上位机实现电脑与单片机之间的传输数据,利用串口助手是最直接的通信方式,但串口助手不适合做上位机,如果会写串口助手的软件,基本能写自己写一个上 ...

  4. 使用PYQT5打开电脑摄像头并进行拍照

    目录 1 UI界面的布局 2 UI界面布局对应的代码 3 打开电脑摄像头等功能的完整代码 4 一些代码函数和优化界面代码 5 最终效果 1 UI界面的布局 下图是简单设计的一个UI控制的输出可视化界面 ...

  5. jetson nano opencv 打开 CSI摄像头_怎样使用OpenCV打开电脑摄像头或者外接USB摄像头...

    我们如何使用OpenCV打开摄像头并获取从摄像头得到的视频流数据呢?下面,我们会使用VS2019和OpenCV实现该功能. 先上代码: #include#include using namespace ...

  6. opencv打开电脑摄像头,空格控制视频录制暂停,ESC退出并保存视频

    基本思路: (1)打开摄像头 (2)获得摄像头读入图像参数,设置视频录制器VideoWriter (3)捕获键盘操作,空格key=32, ESC的key=27 (4)不断刷新当前帧,显示视频录制情况 ...

  7. python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图

    这是一个利用dlib进行关键点定位 + opencv处理的人脸对齐.换脸.关键点识别的小demo.原文来自于<Switching Eds: Face swapping with Python, ...

  8. opencv打开电脑摄像头

    上面是我的微信和QQ群,欢迎新朋友的加入. 打开摄像头 源码 import cv2 import numpy import matplotlib.pyplot as plotcap=cv2.Video ...

  9. 用opencv打开电脑摄像头

    import numpy as np import cv2 #打开本地摄像头,括号内表示设备编号,第一个设备为0,如果电脑有两个摄像头,第二个摄像头就是1 cap=cv2.VideoCapture(0 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task24. 恢复二叉搜索树
  2. 华为:对部分顶尖学生实行年薪制 最高200万元
  3. php sort 不同类型导致的问题
  4. 数据库的UNDO和REDO
  5. python numpy.arange() 函数的使用方法 (在给定间隔内返回均匀间隔的值)
  6. 如何在Eclipse和Android Studio中导入library project
  7. 无招胜有招之Java进阶JVM(八)类加载机制
  8. 聊聊高并发(三十一)解析java.util.concurrent各个组件(十三) 理解Exchanger交换器
  9. SAP Spartacus b2b table,通过listService的table type字段来控制要加载的数据类型
  10. 选定用户与用户组启动流程(学习笔记)
  11. 固件类型bios好还是uefi好_uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里
  12. 5G 是未来的唯一选择?| 畅言
  13. python磁盘空间_python3实现磁盘空间监控
  14. 程序设计实践——第二章
  15. [线性代数] 1.2 全排列和对换
  16. 媒体在计算机科学中的两种含义,多媒体技术应用思考与练习题.doc
  17. 题解 P2184 【贪婪大陆】
  18. python随机生成英文字符串_Python练习第六题,生成随机字母
  19. 化妆品店5大智能玩法,引领美容美妆新零售趋势
  20. 驾考系统C#winform驾照考试系统

热门文章

  1. elementUI 中 table表格 图片 放大
  2. 什么是 TypeScript?
  3. 联想开机启动项按哪个_联想笔记本开机按F2进 BIOS BOOT启动选项,找不到u盘启动项,怎么设定...
  4. 利用ffmpeg对视频文件进行分析几例
  5. Python创建文件时自动生成文件信息
  6. 幼儿园语言活动包括哪几类_幼儿园语言教育活动及设计答案
  7. 【动规递推】聪明伶俐的香穗子
  8. C语言:map与迭代器iterator
  9. 兄弟们,就是干 微信三方登录绝对干货
  10. 电子商务网上开店三种模式