最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實(shí)例

 更新時(shí)間:2019年06月28日 08:42:32   作者:ANONYMOUSLYCN  
今天小編就為大家分享一篇Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

起因

說(shuō)起來(lái)錄制視頻,我們可能有很多的軟件,但是比較坑的是,好像很少的軟件支持能夠同時(shí)錄制兩個(gè)攝像頭的視頻,于是我們用python自己寫(xiě)一個(gè)。要是OpenCV+python。貌似很簡(jiǎn)單就能OK的事情,但是,我們的項(xiàng)目不是一般要展示給老師看嘛。誰(shuí)愿意看一個(gè)沒(méi)有界面的錄制過(guò)程是吧~,最后會(huì)附上源代碼~

依賴(lài)的包

在這里,我直接把import的包寫(xiě)出來(lái)了各位可以進(jìn)行對(duì)號(hào)入座,然后就能知道需要安裝哪個(gè)包啦!

import cv2
import numpy as np
from PyQt5.QtWidgets import (QMainWindow, QApplication, QFileDialog)
import threading
import threadpool 
from CvPyGui import ImageCvQtContainer
from CvPyGui.ui import gui

界面設(shè)計(jì)

pyqt的界面可以用designer進(jìn)行構(gòu)造,這里因?yàn)槭请p目攝像頭,我們構(gòu)造的界面就是這樣子的了:

其中TextLabel就是用來(lái)進(jìn)行顯示圖像的,這里更新圖像的代碼如下:

class Image(QWidget):
 """Common base for the images"""

 def __init__(self, name, label):
 super().__init__()

 # Label (frame) where the original image will be located, with scaling
 self.frame_lbl = label

 def updateImage(self, opencv_rgb_image):

 self.cv_img_rgb = opencv_rgb_image

 height, width, channel = self.cv_img_rgb.shape
 bytesPerLine = 3 * width
 self.q_image = QImage(self.cv_img_rgb.data, width,
  height, bytesPerLine, QImage.Format_RGB888)

 self.frame_lbl.setPixmap(QPixmap.fromImage(self.q_image))

 def saveImage(self):
 # Function for saving the processed image

 filter = "Images (*.png *.jpg)"

 image_path, _ = QFileDialog.getSaveFileName(self, filter=filter)

 cv_img_bgr = cv2.cvtColor(
 self.cv_img_rgb, cv2.COLOR_RGB2BGR)
 cv2.imwrite(image_path, cv_img_bgr)

我們也知道,視頻是一幀一幀的進(jìn)行播放的。所以,我們?cè)诓シ诺臅r(shí)候?qū)嶋H上就是在更新每一幀的畫(huà)面了。

OpenCV的視頻獲取

使用OpenCV獲取視頻很簡(jiǎn)單

 cap = cv2.VideoCapture(int(text))
 cap.set(6 ,cv2.VideoWriter_fourcc('M', 'J', 'P', 'G') );
 cap.set(3,w);
 cap.set(4,h);
 global update1
 update1 = 1
 global shotmark1
 ret, frame = cap.read() 

這樣就能夠獲取到一幀圖像了,其中cap.set()函數(shù)用來(lái)設(shè)置相機(jī)的參數(shù),本來(lái)應(yīng)該有宏定義的,但是在python里面老是報(bào)錯(cuò),直接用數(shù)字替代了,其中3就是獲取視頻的寬度像素,4是高度,這個(gè)要和攝像頭手冊(cè)上的參數(shù)一致。一般的Webcam有兩種圖像獲取格式:一種是YUV2格式這種事10bit回傳的數(shù)據(jù),理論上質(zhì)量更好,但是有個(gè)很大的問(wèn)題是分辨率高的時(shí)候,幀率就會(huì)變得十分低。另一種格式是MJPEG格式,這個(gè)是使用了壓縮技術(shù)得到的視頻流。通過(guò)這個(gè)格式,手冊(cè)上說(shuō)在1920x1080分辨率下都能獲得30fps的表現(xiàn),而YUV2只有5fps(后來(lái)發(fā)現(xiàn),這個(gè)就是坑爹的,信了就怪了)。cap.set(6 ,cv2.VideoWriter_fourcc(‘M', ‘J', ‘P', ‘G') );這個(gè)參數(shù)就是使用MJPEG格式來(lái)讀取攝像頭的數(shù)據(jù)。

多線程

剛才我們呢也提到了,cap.read()這個(gè)函數(shù)是獲取到了一幀圖像,但是呢。我們要的是動(dòng)畫(huà)啊,要是寫(xiě)個(gè)循環(huán)的話,又會(huì)吧進(jìn)程卡死在循環(huán)中,照成假死的狀態(tài),所以對(duì)于圖像的繪制,一定要使用多線程技術(shù)。在這里我不僅要吐槽一下了。學(xué)了好多年計(jì)算機(jī),講了很多串行算法和編程,一講到多線程,無(wú)非就是打印個(gè)Hello World!,根本就沒(méi)有什么實(shí)踐,理論倒是學(xué)了很多,感覺(jué)用的時(shí)候頭真的好大!

其實(shí)這里的多線程也沒(méi)有什么是吧,就是起調(diào)一下。但是要注意的是要控制線程的退出,在python這個(gè)我引入的多線程包里面,賊坑的是沒(méi)有外界控制線程退出的辦法!所以,我設(shè)置了一個(gè)全局變量,使用判斷全局變量的值來(lái)判斷是否讓子線程繼續(xù)下去。

結(jié)尾

實(shí)際上,還有分辨率/幀率設(shè)置功能呢,只不過(guò)懶得寫(xiě)了?。。?

GitHub:https://github.com/anonymouslycn/bjtu_BinocularCameraRecord

路過(guò)的還新希望你能夠高抬貴手給個(gè)Star吖~~ 筆芯~~

以上這篇Python+OpenCV+pyQt5錄制雙目攝像頭視頻的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對(duì)python中的argv和argc使用詳解

    對(duì)python中的argv和argc使用詳解

    今天小編就為大家分享一篇對(duì)python中的argv和argc使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python從入門(mén)到精通(DAY 1)

    python從入門(mén)到精通(DAY 1)

    本文是此次python從入門(mén)到精通系列文章的第一篇,給大家匯總一下常用的Python的基礎(chǔ)知識(shí),非常的簡(jiǎn)單,但是很全面,有需要的小伙伴可以參考下
    2015-12-12
  • PyTorch 對(duì)應(yīng)點(diǎn)相乘、矩陣相乘實(shí)例

    PyTorch 對(duì)應(yīng)點(diǎn)相乘、矩陣相乘實(shí)例

    今天小編就為大家分享一篇PyTorch 對(duì)應(yīng)點(diǎn)相乘、矩陣相乘實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python實(shí)現(xiàn)自動(dòng)打卡的示例代碼

    python實(shí)現(xiàn)自動(dòng)打卡的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)打卡的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • python中matplotlib調(diào)整圖例位置的方法實(shí)例

    python中matplotlib調(diào)整圖例位置的方法實(shí)例

    在matplotlib中,一般圖例默認(rèn)是在圖表內(nèi)部的,如果要放置到圖例外面,需要對(duì)坐標(biāo)進(jìn)行指定,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib調(diào)整圖例位置的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python正則表達(dá)式使用指南

    Python正則表達(dá)式使用指南

    正則表達(dá)式(Regular Expression, 簡(jiǎn)稱(chēng) regex)是處理字符串和文本的強(qiáng)大工具,它使用特定的語(yǔ)法定義一組規(guī)則,通過(guò)這些規(guī)則可以對(duì)文本進(jìn)行匹配、查找、替換等操作,本文將詳細(xì)介紹 Python 中如何使用正則表達(dá)式,需要的朋友可以參考下
    2024-11-11
  • python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作

    python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作

    這篇文章主要介紹了python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python Selenium截圖功能實(shí)現(xiàn)代碼

    Python Selenium截圖功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python Selenium截圖功能實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python selenium實(shí)現(xiàn)智聯(lián)招聘數(shù)據(jù)爬取

    python selenium實(shí)現(xiàn)智聯(lián)招聘數(shù)據(jù)爬取

    這篇文章主要介紹了python selenium實(shí)現(xiàn)智聯(lián)招聘數(shù)據(jù)爬取,需要的朋友可以參考下
    2021-04-04
  • python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解

    python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解

    這篇文章主要為大家介紹了python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論

泾川县| 桃源县| 白水县| 富蕴县| 陵川县| 酉阳| 延安市| 来凤县| 白玉县| 禄劝| 视频| 济南市| 龙南县| 宜君县| 谢通门县| 新安县| 四川省| 疏勒县| 元阳县| 壤塘县| 桂平市| 穆棱市| 澄城县| 徐州市| 包头市| 石柱| 雷州市| 汉中市| 兴宁市| 昌黎县| 依安县| 上犹县| 襄城县| 濉溪县| 卓尼县| 漳平市| 富蕴县| 济宁市| 阿鲁科尔沁旗| 交城县| 繁昌县|