亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

起因

說起來錄制視頻,我們可能有很多的軟件,但是比較坑的是,好像很少的軟件支持能夠同時錄制兩個攝像頭的視頻,于是我們用python自己寫一個。要是OpenCV+python。貌似很簡單就能OK的事情,但是,我們的項目不是一般要展示給老師看嘛。誰愿意看一個沒有界面的錄制過程是吧~,最后會附上源代碼~

依賴的包

在這里,我直接把import的包寫出來了各位可以進行對號入座,然后就能知道需要安裝哪個包啦!

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è)計

pyqt的界面可以用designer進行構(gòu)造,這里因為是雙目攝像頭,我們構(gòu)造的界面就是這樣子的了:

其中TextLabel就是用來進行顯示圖像的,這里更新圖像的代碼如下:

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)

我們也知道,視頻是一幀一幀的進行播放的。所以,我們在播放的時候?qū)嶋H上就是在更新每一幀的畫面了。

OpenCV的視頻獲取

使用OpenCV獲取視頻很簡單

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

多線程

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

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

結(jié)尾

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

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

路過的還新希望你能夠高抬貴手給個Star吖~~ 筆芯~~

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

相關(guān)文章

  • Python中for循環(huán)控制語句用法實例

    Python中for循環(huán)控制語句用法實例

    這篇文章主要介紹了Python中for循環(huán)控制語句用法,較為詳細的分析了for循環(huán)語句的原理與相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06
  • python獲取中文字符串長度的方法

    python獲取中文字符串長度的方法

    今天小編就為大家分享一篇python獲取中文字符串長度的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python3.4用循環(huán)往mysql5.7中寫數(shù)據(jù)并輸出的實現(xiàn)方法

    python3.4用循環(huán)往mysql5.7中寫數(shù)據(jù)并輸出的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猵ython3.4用循環(huán)往mysql5.7中寫數(shù)據(jù)并輸出的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 深入理解python虛擬機之多繼承與?mro

    深入理解python虛擬機之多繼承與?mro

    在本篇文章當(dāng)中將主要給大家介紹?python?當(dāng)中的多繼承和mro,通過介紹在多繼承當(dāng)中存在的問題就能夠理解在cpython當(dāng)中引入c3算法的原因了,從而能夠幫助大家更好的了理解mro,需要的朋友可以參考下
    2023-05-05
  • Python實現(xiàn)Linux的find命令實例分享

    Python實現(xiàn)Linux的find命令實例分享

    本文給大家分享的是使用python簡單實現(xiàn)模擬linux的find命令的實例代碼,推薦給大家,希望大家能夠喜歡
    2017-06-06
  • pandas數(shù)據(jù)的合并與拼接的實現(xiàn)

    pandas數(shù)據(jù)的合并與拼接的實現(xiàn)

    Pandas包的merge、join、concat方法可以完成數(shù)據(jù)的合并和拼接,本文主要介紹了這三種實現(xiàn)方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python根據(jù)json數(shù)據(jù)畫疫情分布地圖的詳細代碼

    python根據(jù)json數(shù)據(jù)畫疫情分布地圖的詳細代碼

    這篇文章主要介紹了python根據(jù)json數(shù)據(jù)畫疫情分布地圖的詳細代碼,掌握使用pyecharts構(gòu)建基礎(chǔ)的全國地圖可視化圖表,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python實用技巧之列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)詳解

    Python實用技巧之列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)詳解

    這篇文章主要給大家介紹了關(guān)于Python技巧之在列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-07-07
  • 使用Python OpenCV為CNN增加圖像樣本的實現(xiàn)

    使用Python OpenCV為CNN增加圖像樣本的實現(xiàn)

    這篇文章主要介紹了使用Python OpenCV為CNN增加圖像樣本的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 5分鐘 Pipenv 上手指南

    5分鐘 Pipenv 上手指南

    這篇文章主要介紹了5分鐘 Pipenv 上手指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論