国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Pyqt5打開電腦攝像頭進行拍照

這篇具有很好參考價值的文章主要介紹了Pyqt5打開電腦攝像頭進行拍照。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1、設(shè)計UI界面

2、設(shè)計邏輯代碼,建立連接顯示窗口

3、結(jié)果


1、設(shè)計UI界面

Pyqt5打開電腦攝像頭進行拍照,Pyqt5,qt,開發(fā)語言

將ui界面轉(zhuǎn)為py文件后獲得的邏輯代碼為:(文件名為?Camera.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ca.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(648, 280)
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(10, 20, 631, 181))
        self.widget.setObjectName("widget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.label_2 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setPointSize(20)
        self.label_2.setFont(font)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)
        self.widget1 = QtWidgets.QWidget(self.centralwidget)
        self.widget1.setGeometry(QtCore.QRect(10, 210, 631, 51))
        self.widget1.setObjectName("widget1")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget1)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButton = QtWidgets.QPushButton(self.widget1)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout_2.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout_2.addWidget(self.pushButton_3)
        self.pushButton_4 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout_2.addWidget(self.pushButton_4)
        mainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(mainWindow)
        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        mainWindow.setWindowTitle(_translate("mainWindow", "MainWindow"))
        self.label.setText(_translate("mainWindow", "攝像頭"))
        self.label_2.setText(_translate("mainWindow", "采集圖像"))
        self.pushButton.setText(_translate("mainWindow", "打開攝像頭"))
        self.pushButton_2.setText(_translate("mainWindow", "采集圖像"))
        self.pushButton_3.setText(_translate("mainWindow", "關(guān)閉攝像頭"))
        self.pushButton_4.setText(_translate("mainWindow", "打開圖像"))

2、設(shè)計邏輯代碼,建立連接顯示窗口

邏輯代碼如下:(文件名為Camera_main.py

# here put the import lib
import sys
from PyQt5 import QtGui, QtWidgets
from Camera import Ui_mainWindow
import cv2
import time
from PyQt5.Qt import *

class Open_Camera(QtWidgets.QMainWindow, Ui_mainWindow):
    def __init__(self):
        super(Open_Camera, self).__init__()
        self.setupUi(self)                    # 創(chuàng)建窗體對象
        self.init()
        self.cap = cv2.VideoCapture()         # 初始化攝像頭
        self.photo_flag = 0
        self.label.setScaledContents(True)    # 圖片自適應(yīng)
        self.label_2.setScaledContents(True)  # 圖片自適應(yīng)

    def init(self):
        # 定時器讓其定時讀取顯示圖片
        self.camera_timer = QTimer()
        self.camera_timer.timeout.connect(self.show_image)
        # 打開攝像頭
        self.pushButton.clicked.connect(self.open_camera)
        # 拍照
        self.pushButton_2.clicked.connect(self.taking_pictures)
        # 關(guān)閉攝像頭
        self.pushButton_3.clicked.connect(self.close_camera)
        # 導(dǎo)入圖片
        self.pushButton_4.clicked.connect(self.loadphoto)

    # 開啟攝像頭
    def open_camera(self):
        self.cap = cv2.VideoCapture(0)  # 攝像頭
        self.camera_timer.start(40)     # 每40毫秒讀取一次,即刷新率為25幀
        self.show_image()

    # 顯示圖片
    def show_image(self):
        flag, self.image = self.cap.read()  # 從視頻流中讀取圖片
        width,height,_ = self.image.shape # 行:寬,列:高
        ratio1 = width / self.label.width()  # (label 寬度)
        ratio2 = height / self.label.height()  # (label 高度)
        ratio = max(ratio1, ratio2)
        image_show = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)  # opencv讀的通道是BGR,要轉(zhuǎn)成RGB
        image_show = cv2.flip(image_show, 1)  # 水平翻轉(zhuǎn),因為攝像頭拍的是鏡像的。
        # 把讀取到的視頻數(shù)據(jù)變成QImage形式(圖片數(shù)據(jù)、高、寬、RGB顏色空間,三個通道各有2**8=256種顏色)
        self.showImage = QtGui.QImage(image_show.data, height, width, QImage.Format_RGB888)
        self.showImage.setDevicePixelRatio(ratio) # 按照縮放比例自適應(yīng) label 顯示
        self.label.setPixmap(QPixmap.fromImage(self.showImage))  # 往顯示視頻的Label里顯示QImage
        # self.label.setScaledContents(True) # 圖片自適應(yīng)

    # 拍照
    def taking_pictures(self):
        if self.cap.isOpened():
            FName = fr"images/cap{time.strftime('%Y%m%d%H%M%S', time.localtime())}"
            print(FName)
            self.label_2.setPixmap(QtGui.QPixmap.fromImage(self.showImage))
            # self.showImage.save(FName + ".jpg", "JPG", 100)
            self.showImage.save('./1.jpg')
        else:
            QMessageBox.critical(self, '錯誤', '攝像頭未打開!')
            return None

    # 關(guān)閉攝像頭
    def close_camera(self):
        self.camera_timer.stop()  # 停止讀取
        self.cap.release()  # 釋放攝像頭
        self.label.clear()  # 清除label組件上的圖片
        self.label_2.clear()  # 清除label組件上的圖片
        self.label.setText("攝像頭")
        # self.cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 攝像頭

    # 導(dǎo)入圖片
    def loadphoto(self):
        fname, _ = QFileDialog.getOpenFileName(self, '選擇圖片', '../', 'Image files(*.jpg *.gif *.png*.bmp)')
        self.showImage = fname
        self.label_2.setPixmap(QPixmap(self.showImage).scaled(self.label_2.width(), self.label_2.height()))

if __name__ == '__main__':
    from PyQt5 import QtCore
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)  # 自適應(yīng)分辨率
    app = QtWidgets.QApplication(sys.argv)
    ui = Open_Camera()
    ui.show()
    sys.exit(app.exec_())

3、結(jié)果

Pyqt5打開電腦攝像頭進行拍照,Pyqt5,qt,開發(fā)語言

參考:暫未成功人士文章來源地址http://www.zghlxwxcb.cn/news/detail-658911.html

到了這里,關(guān)于Pyqt5打開電腦攝像頭進行拍照的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Pyqt5+Opencv實現(xiàn)攝像頭圖像的實時讀取并顯示

    Pyqt5+Opencv實現(xiàn)攝像頭圖像的實時讀取并顯示

    QTimer在界面中不可見,在UI設(shè)計器中也找不到它,只能通過純代碼實現(xiàn),主要作用是定時特定的時間。 想要掌握QTimer只需掌握setInterval(設(shè)置定時時間,單位ms)、start(啟動定時器),和定時時間到時所發(fā)出的信號timeout()即可。程序設(shè)計的思路: 1.先設(shè)定定時周期 2.綁定timeout()信號

    2024年02月04日
    瀏覽(27)
  • vue調(diào)用電腦端攝像頭實時拍照

    vue調(diào)用電腦端攝像頭實時拍照

    點擊照相機拍照,彈出照相機拍照彈窗,點擊拍照按鈕,截取錄像的幀,點擊保存,提交數(shù)據(jù)給后臺。 1.html模塊 2.css模塊 就是一個彈窗,這里就不進行展示了。 3.js模塊

    2024年02月12日
    瀏覽(25)
  • 【QT】QT調(diào)用電腦攝像頭并拍照

    【QT】QT調(diào)用電腦攝像頭并拍照

    建議搭配視頻食用: 【【QT】QT調(diào)用電腦攝像頭并拍照】 https://www.bilibili.com/video/BV1pc411G7qy/?share_source=copy_webvd_source=c0d9dd4e64b88e4dbf93ac009c2010dc 一、在pro文件中添加‘multimedia multimediawidgets’ 二、在ui界面創(chuàng)建一個widget并改名為camera用于展示攝像頭內(nèi)容和pushbutton 用于拍照,并右鍵

    2024年02月12日
    瀏覽(23)
  • PyQt5學(xué)習(xí)筆記--攝像頭實時視頻展示、多線程處理、視頻編解碼

    PyQt5學(xué)習(xí)筆記--攝像頭實時視頻展示、多線程處理、視頻編解碼

    目錄 1--前言 2--基于Qt Designer設(shè)計ui文件 3--視頻的編解碼操作 4--完整代碼 5--結(jié)果展示 6--存在的問題 7--參考 ① 創(chuàng)建兩個線程, 主線程 為ui線程, 子線程 用于讀取攝像頭視頻,將處理后的圖像幀數(shù)據(jù)(處理操作可以人為添加)返回到主線程進行可視化; ② 子線程向主線程傳

    2023年04月09日
    瀏覽(42)
  • Vue2調(diào)用電腦攝像頭權(quán)限,并拍照

    電腦端需要調(diào)取用戶攝像頭進行拍照

    2024年02月10日
    瀏覽(21)
  • Java獲取實時攝像頭進行拍照(附源碼)

    Java是一種通用編程語言,可以用來開發(fā)各種類型的應(yīng)用程序,包括涉及圖像處理和相機操作的應(yīng)用程序。 ????????要在Java中獲取實時攝像頭進行拍照,通常會借助一些 第三方庫或API ,例如 OpenCV(Open Source Computer Vision Library) 或 Java Media Framework(JMF) 等。這些庫和API提

    2024年01月25日
    瀏覽(23)
  • Python進階,使用 opencv 調(diào)用攝像頭進行拍照

    ? ? ? ? ?opencv 支持 Python 版本的模塊叫作 opencv-p hon ,可直接使用 pip install opencv-python 令進行安裝,但常常會因為網(wǎng)絡(luò)等問題導(dǎo)致失敗。推薦使用離線模式來安裝 opencv 模塊。 下載完安裝包后,使用如下命令進行安裝: D: pip install opencv

    2024年02月11日
    瀏覽(27)
  • vue + element 谷歌瀏覽器調(diào)用電腦攝像頭拍照

    vue + element 谷歌瀏覽器調(diào)用電腦攝像頭拍照

    ?本項目使用ruoyi-vue-plus (使用文件上傳功能 去ruoyi-vue-plus查看封裝的js,文件目錄 utils/request.js? 封裝了axios) 框架推薦:https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 抄襲一下項目例子:? ?vue + element 實現(xiàn)電腦拍照例子:https://gitee.com/devil_mask/camera-demo.git ?界面: ?script: 上傳圖片: ?

    2024年02月12日
    瀏覽(25)
  • opencv在linux上調(diào)用usb攝像頭進行拍照

    opencv在linux上調(diào)用usb攝像頭進行拍照

    一般video1就是usb攝像頭

    2024年02月06日
    瀏覽(20)
  • 電腦微信視頻攝像頭怎么打開 微信視頻聊天怎么打開電腦攝像頭

    電腦微信視頻攝像頭怎么打開 微信視頻聊天怎么打開電腦攝像頭

    最近有用戶在使用電腦微信視頻聊天的時候,不知道怎么打開電腦攝像頭的權(quán)限,今天小編就給大家?guī)砹宋⑿乓曨l聊天打開電腦攝像頭的具體方法。無論你是臺式電腦還是聯(lián)想、戴爾、華碩、華為等品牌都可以使用本文的方法,有需要的用戶們趕緊來看一下吧。 電腦微信視

    2024年02月06日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包