python利用pyqt5和opencv打开电脑摄像头并进行拍照
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打开电脑摄像头并进行拍照相关推荐
- Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI
现在NBA联赛也进行到半决赛了,我们怎么样才能以更快的方法获取NBA的数据呢?这里我们就自己来做一个数据播报的程序 文章目录 制作NBA数据爬虫 捋顺思路 编写代码 NBAReporter.py NB ...
- python利用PyQt5和QTDesginer开发GUI应用(二)、股票查询工具
python应用GUI开发系列: python利用PyQt5和QTDesginer开发GUI应用(一).环境准备及demo -------------------------------------- ...
- Python 利用PyQt5写一个简易的串口助手
学习单片机,STM32好长时间了,也做了一些项目,一直想利用上位机实现电脑与单片机之间的传输数据,利用串口助手是最直接的通信方式,但串口助手不适合做上位机,如果会写串口助手的软件,基本能写自己写一个上 ...
- 使用PYQT5打开电脑摄像头并进行拍照
目录 1 UI界面的布局 2 UI界面布局对应的代码 3 打开电脑摄像头等功能的完整代码 4 一些代码函数和优化界面代码 5 最终效果 1 UI界面的布局 下图是简单设计的一个UI控制的输出可视化界面 ...
- jetson nano opencv 打开 CSI摄像头_怎样使用OpenCV打开电脑摄像头或者外接USB摄像头...
我们如何使用OpenCV打开摄像头并获取从摄像头得到的视频流数据呢?下面,我们会使用VS2019和OpenCV实现该功能. 先上代码: #include#include using namespace ...
- opencv打开电脑摄像头,空格控制视频录制暂停,ESC退出并保存视频
基本思路: (1)打开摄像头 (2)获得摄像头读入图像参数,设置视频录制器VideoWriter (3)捕获键盘操作,空格key=32, ESC的key=27 (4)不断刷新当前帧,显示视频录制情况 ...
- python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图
这是一个利用dlib进行关键点定位 + opencv处理的人脸对齐.换脸.关键点识别的小demo.原文来自于<Switching Eds: Face swapping with Python, ...
- opencv打开电脑摄像头
上面是我的微信和QQ群,欢迎新朋友的加入. 打开摄像头 源码 import cv2 import numpy import matplotlib.pyplot as plotcap=cv2.Video ...
- 用opencv打开电脑摄像头
import numpy as np import cv2 #打开本地摄像头,括号内表示设备编号,第一个设备为0,如果电脑有两个摄像头,第二个摄像头就是1 cap=cv2.VideoCapture(0 ...
最新文章
- 刻意练习:LeetCode实战 -- Task24. 恢复二叉搜索树
- 华为:对部分顶尖学生实行年薪制 最高200万元
- php sort 不同类型导致的问题
- 数据库的UNDO和REDO
- python numpy.arange() 函数的使用方法 (在给定间隔内返回均匀间隔的值)
- 如何在Eclipse和Android Studio中导入library project
- 无招胜有招之Java进阶JVM(八)类加载机制
- 聊聊高并发(三十一)解析java.util.concurrent各个组件(十三) 理解Exchanger交换器
- SAP Spartacus b2b table,通过listService的table type字段来控制要加载的数据类型
- 选定用户与用户组启动流程(学习笔记)
- 固件类型bios好还是uefi好_uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里
- 5G 是未来的唯一选择?| 畅言
- python磁盘空间_python3实现磁盘空间监控
- 程序设计实践——第二章
- [线性代数] 1.2 全排列和对换
- 媒体在计算机科学中的两种含义,多媒体技术应用思考与练习题.doc
- 题解 P2184 【贪婪大陆】
- python随机生成英文字符串_Python练习第六题,生成随机字母
- 化妆品店5大智能玩法,引领美容美妆新零售趋势
- 驾考系统C#winform驾照考试系统