这是加载pyqt gui表单的主代码,它有两个按钮
启动网络摄像头,第二个摄像头用于从相框中捕捉照片。在
我写了第一个按钮,但我写不出捕获按钮。在
import sys
import cv2
import numpy as np
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QImage,QPixmap
from PyQt5.QtWidgets import QApplication , QDialog
from PyQt5.uic import loadUi
img_counter = 0
class video (QDialog):
def __init__(self):
super(video, self).__init__()
loadUi('video.ui',self)
self.image=None
self.startButton.clicked.connect(self.start_webcam)
self.capture.clicked.connect(self.keyPressEvent)
def start_webcam(self):
self.capture =cv2.VideoCapture(0)
self.capture.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
self.capture.set(cv2.CAP_PROP_FRAME_WIDTH,640)
self.timer=QTimer(self)
self.timer.timeout.connect(self.update_frame)
self.timer.start(5)
def update_frame(self):
ret,self.image=self.capture.read()
self.image=cv2.flip(self.image,1)
self.displayImage(self.image,1)
def keyPressEvent(self):
flag, frame= self.capture.read()
path = 'J:\Face'
cv2.imwrite(os.path.join(path,'wakka.jpg'), frame)
def displayImage(self,img,window=1):
qformat=QImage.Format_Indexed8
if len(img.shape)==3 :
if img.shape[2]==4:
qformat=QImage.Format_RGBA8888
else:
qformat=QImage.Format_RGB888
outImage=QImage(img,img.shape[1],img.shape[0],img.strides[0],qformat)
outImage=outImage.rgbSwapped()
if window==1:
self.imgLabel.setPixmap(QPixmap.fromImage(outImage))
self.imgLabel.setScaledContents(True)
if __name__=='__main__':
app=QApplication(sys.argv)
window=video()
window.setWindowTitle('main code')
window.show()
sys.exit(app.exec_())
我想从相框中捕捉照片并保存在文件夹中。在
在self.capture.已单击.连接(self.keypress事件)当我们点击按钮的时候。在
我应该在keyPressEvent def中编写函数
在捕获点击一个按钮
有人能帮我渡过难关吗?在
编辑注释:
^{pr2}$我想要循环的条件,这样我就可以用counter保存img\u name格式,但是计数器必须是点击次数
keyPressEvent是一种方法,它允许您在小部件有焦点的情况下捕获键,在您的情况下这是不必要的,解决方案是简单地更改其名称,另一方面我改进了您的代码。在
^{1}$相关问题 更多 >
编程相关推荐