python攝像頭文檔介紹內容,python 獲取攝像頭圖像

本文目錄一覽:

python如何能採集多個攝像頭的數據

可以,用PYQT+CV2,四個USB連接成功,程序如下,UI要自己搞了,放不下

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

import sys#, time

from PyQt5 import QtWidgets

from PyQt5.QtCore import QTimer, QThread, pyqtSignal

from Ui_cv2ui_thread import Ui_MainWindow

import cv2 as cv

from PyQt5.QtGui import QImage, QPixmap

from PyQt5.QtWidgets import (QApplication, QDialog, QFileDialog, QGridLayout,

QLabel, QPushButton, QColorDialog)

import numpy as np

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):

def __init__(self, parent=None):

super(MainWindow, self).__init__(parent=parent)

self.setupUi(self) #這個一定要在這個最前面位置

# define the slot for pushbutton to save the merged image

self.pushButton.clicked.connect(self.savemergeimage)

self.img = np.ndarray(()) #空的numpy array

self.img1 = np.ndarray(())

self.img2= np.ndarray(())

self.img3= np.ndarray(())

self.img4= np.ndarray(())

self.img4= np.empty([960,1280, 3], int)

self.cap = cv.VideoCapture(3) #注意,由大開到小,很重要

self.cap.set(3, 640) # setup the resolution of CCD

self.cap.set(4, 480)

ret, self.img=self.cap.read()

self.cap1 = cv.VideoCapture(2)

self.cap1.set(3, 640)

self.cap1.set(4, 480)

ret, self.img1=self.cap1.read()

self.cap2 = cv.VideoCapture(1)

self.cap2.set(3, 640)

self.cap2.set(4, 480)

ret, self.img2=self.cap2.read()

self.cap3 = cv.VideoCapture(0)

self.cap3.set(3, 640)

self.cap3.set(4, 480)

ret, self.img3=self.cap3.read()

#time.sleep(1)也許需要延遲,等他準備好

# 初始化一個定時器,在其他條件下用的

#self.timer = QTimer(self)

# 實例化一個線程

self.work0= WorkThread()

self.work0.trigger.connect(self.ccd2)

# 定義時間任務是一次性任務就設定下一行

#self.timer.setSingleShot(True)

# 啟動時間任務,注意一致性

self.work0.start()

# 實例化一個線程

self.work= WorkThread()

# 多線程的信號觸發連接到ccd3

self.work.trigger.connect(self.ccd3)

self.work.start()

# 實例化一個線程

self.work2 = WorkThread()

# 多線程的信號觸發連接到ccd4

self.work2.trigger.connect(self.ccd4)

self.work2.start()

# 實例化一個線程

self.work3 = WorkThread()

# 多線程的信號觸發連接到ccd1

self.work3.trigger.connect(self.ccdmerge)

self.work3.start()

self.work4 = WorkThread()

# 多線程的信號觸發連接到ccd1

self.work4.trigger.connect(self.ccd1)

self.work4.start()

def refreshShowa(self):#顯示ccd1到label1

# 提取圖像的尺寸和通道, 用於將opencv下的image轉換成Qimage

height, width, channel = self.img.shape

bytesPerLine = 3 * width

self.qImg = QImage(self.img.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 將Qimage顯示出來

self.label.setPixmap(QPixmap.fromImage(self.qImg))

def refreshShowb(self):#顯示ccd2到label2

# 提取圖像的尺寸和通道, 用於將opencv下的image轉換成Qimage

height, width, channel = self.img1.shape

bytesPerLine = 3 * width

self.qImg1 = QImage(self.img1.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 將Qimage顯示出來

self.label_2.setPixmap(QPixmap.fromImage( self.qImg1))

def refreshShowc(self):#顯示ccd3到label3

# 提取圖像的尺寸和通道, 用於將opencv下的image轉換成Qimage

height, width, channel = self.img2.shape

bytesPerLine = 3 * width

self.qImg2 = QImage(self.img2.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 將Qimage顯示出來

self.label_3.setPixmap(QPixmap.fromImage( self.qImg2))

def refreshShowd(self):#顯示ccd4到label4

# 提取圖像的尺寸和通道, 用於將opencv下的image轉換成Qimage

height, width, channel = self.img3.shape

bytesPerLine = 3 * width

self.qImg3 = QImage(self.img3.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 將Qimage顯示出來

self.label_4.setPixmap(QPixmap.fromImage( self.qImg3))

def refreshShowe(self):#顯示合併的影像到label6

# 提取圖像的尺寸和通道, 用於將opencv下的image轉換成Qimage

height, width, channel = self.img4.shape

bytesPerLine = 3 * width

self.qImg4 = QImage(self.img4.data, width, height, bytesPerLine,

QImage.Format_RGB888).rgbSwapped()

# 將Qimage顯示出來

self.label_6.setPixmap(QPixmap.fromImage( self.qImg4))

def ccd1(self):

self.cap.set(3, 640)

self.cap.set(4, 480)

ret, self.img = self.cap.read()

self.refreshShowa()

# 啟動另一個線程

self.work0.start()#注意一致性

def ccd2(self, str):

self.cap1.set(3, 640)

self.cap1.set(4, 480)

ret, self.img1 = self.cap1.read()

self.refreshShowb()

self.work.start()#注意一致性

def ccd3(self, str):

self.cap2.set(3, 640)

self.cap2.set(4, 480)

ret, self.img2= self.cap2.read()

self.refreshShowc()

self.work2.start()#注意一致性

def ccd4(self, str):

self.cap3.set(3, 640)

self.cap3.set(4, 480)

ret, self.img3 = self.cap3.read()

self.refreshShowd()

self.work3.start()#注意一致性

def ccdmerge(self, str):

self.img4=np.hstack((self.img, self.img1))

self.img4=np.vstack((self.img4, np.hstack((self.img2, self.img3))))

#print (‘here is a merge process’) 可以用來判斷多線程的執行

self.refreshShowe() #later to remove the remark

self.work4.start()#注意一致性

def savemergeimage(self):

# 調用存儲文件dialog

fileName, tmp = QFileDialog.getSaveFileName(

self, ‘Save Image’, ‘./__data’, ‘*.png *.jpg *.bmp’, ‘*.png’)

if fileName == ”:

return

if self.img.size == 1:

return

# 調用opencv寫入圖像

cv.imwrite(fileName,self.img4)

class WorkThread(QThread): #多線程核心,非常重要

# 定義一個信號

trigger = pyqtSignal(str)

def __int__(self):

# 初始化函數,默認

super(WorkThread, self).__init__()

def run(self):

self.trigger.emit(”)

if __name__ == “__main__”:

app = QtWidgets.QApplication(sys.argv)

w = MainWindow()

w.show()

sys.exit(app.exec_())

Python簡直無所不能!在電腦上如何調用手機攝像頭?教你輕鬆搞定

看到標題,卧槽!Python好牛批~

實際上它真的也牛批!

兄弟們用的台式電腦現在很少裝攝像頭的吧,筆記本就不要說話了!

雖然電腦沒有攝像頭,不過萬一要是想跟女朋友電腦來個視頻啥的,但是咱們不是還有手機嗎 ,哈哈~

我們要做一件事,首先要知道目標是啥吧,那我們要幹啥,在電腦上使用手機攝像頭~

小明:那麼問題來了,要怎麼調用手機攝像頭嘞?

經過我不斷的嘗試,最後讓我找到一個非常厲害的軟體,在區域網中可以自由調用手機攝像頭捕捉到的信息,哎,這不就解決了~

小明:那怎麼把捕捉到的鏡頭,實時的顯示出來嘞?

這個都是小問題,Python那麼多庫,分分鐘就能找到合適的,使用這個庫,我們就可以讓我們的圖像顯示出來了。

我們來實際操作一下

將攝像頭apk安裝在手機上並開始使用,驗證一下顯示情況.

1、將手機和電腦連接在同一個wifi下面。

2、啟動app,可以看見app中有一個鏈接地址。

3、將這個區域網鏈接地址寫入瀏覽器的地址中,然後運行起來。

賬號:admin

密碼:admin

然後就可以看見如下畫面:

這其實是一段視頻,看見這個的話,那就說明你成功了一半。

如何來處理這段視頻呢?這時候就到我們編碼了。

先安裝一下要用的模塊,對沒錯,就是這個神器~

pip install opencv-python

先到圖一下庫,你的窗口名字命名一下,@後面換成之前獲取到的app區域網地址,最後面引入視頻地址,video其實也可以換成你電腦中的視頻地址可以製作成一個播放器。

這樣就將視頻引入進來了,你可以換一個視頻地址,把它變成視頻播放器,然後就需要去讀取引入的視頻地址。

既然實時的,而且要長時間運行,那當然少不了while true。

然後終於可以正常運行了,但無法退出,絕望~

雖然這是一個bug,但是在不同場景中他就不是bug,就比如你如果將這個軟體發送給你的鐵汁,讓他一找不到關閉窗口的辦法,只能重啟電腦,讓你高興一陣,那這個就不是bug。不過他會把你怎麼樣我就不不知道了。

那怎麼解決退出的問題,那不簡單,給它加一個判斷~

然後就退出了,雖然退出了,但是需要做後續處理。

然後電腦調用攝像頭就圓滿搞定!

python如何調用IP攝像頭

import cv2

url = ‘rtsp://admin:password@192.168.1.104:554/11’

cap = cv2.VideoCapture(url)

這是我在網上找的一個程序例子

都差不多是這樣

給一個用戶名密碼和ip地址直接就能連上

python 怎麼打開電腦攝像頭

此方案為朋友LSJ提出並實現的,轉過來供學慣用,由於在測試時沒有架設WEB伺服器,也沒有做手機上的測試,僅通過PC測試了下,最完整解決方案請參考原出處《DIY手機監控系統》。

方法:

1 下載並安裝VideoCapture、PIL。

2.編碼,3s抓一個圖片並保存

[python] view plain copy

from VideoCapture import Device

import time, string

interval = 2

cam = Device(devnum=0, showVideoWindow=0)

#cam.setResolution(648, 480)

cam.saveSnapshot(‘image.jpg’, timestamp=3, boldfont=1, quality=75)

i = 0

quant = interval * .1

starttime = time.time()

while 1:

lasttime = now = int((time.time() – starttime) / interval)

print i

cam.saveSnapshot(‘image.jpg’, timestamp=3, boldfont=1)

i += 1

while now == lasttime:

now = int((time.time() – starttime) / interval)

time.sleep(quant)

3.寫個網頁,3s刷新一次,如下:

[html] view plain copy

HTML

HEAD

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /

titleWeb監視/title

META  http-equiv=”refresh”  content=”3″

META  http-equiv=”Expires”  content=”0″

META  http-equiv=”Pragma”   content=”no-cache”

/HEAD

body 

img src=’image.jpg?mail=dyx1024@gmail.com’ width=”47%” height=”381″/

/body

/HTML

4. 測試:

原創文章,作者:TYRS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150270.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TYRS的頭像TYRS
上一篇 2024-11-07 09:50
下一篇 2024-11-07 09:50

相關推薦

  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • 使用Spire.PDF進行PDF文檔處理

    Spire.PDF是一款C#的PDF庫,它可以幫助開發者快速、簡便地處理PDF文檔。本篇文章將會介紹Spire.PDF庫的一些基本用法和常見功能。 一、PDF文檔創建 創建PDF文…

    編程 2025-04-29
  • Python七年級內容用法介紹

    本文將從多個方面對Python七年級內容進行詳細闡述。 一、安裝Python 要使用Python進行編程,首先需要在計算機上安裝Python。Python可以在官網上免費下載。下載…

    編程 2025-04-29
  • Python圖像黑白反轉用法介紹

    本文將從多個方面詳細闡述Python圖像黑白反轉的方法和技巧。 一、Pillow模塊介紹 Pillow是Python的一個圖像處理模塊,可以進行圖片的裁剪、旋轉、縮放等操作。使用P…

    編程 2025-04-28
  • Python爬蟲文檔報告

    本文將從多個方面介紹Python爬蟲文檔的相關內容,包括:爬蟲基礎知識、爬蟲框架及常用庫、爬蟲實戰等。 一、爬蟲基礎知識 1、爬蟲的定義: 爬蟲是一種自動化程序,通過模擬人的行為在…

    編程 2025-04-28
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • Python獲取Flutter上內容的方法及操作

    本文將從以下幾個方面介紹Python如何獲取Flutter上的內容: 一、獲取Flutter應用數據 使用Flutter提供的Platform Channel API可以很容易地獲…

    編程 2025-04-28
  • Python少兒編程的學習內容

    Python被譽為是最適合新手入門的編程語言之一,它簡潔易懂,同時涵蓋了廣泛的編程知識。Python的少兒編程課程也因其易學性和實用性越來越受到家長和孩子們的歡迎。接下來我們將從多…

    編程 2025-04-28
  • Python實現圖像轉化為灰度圖像

    本文將從多個方面詳細闡述如何使用Python將圖像轉化為灰度圖像,包括圖像的概念、灰度圖像的概念、Python庫的使用以及完整的Python代碼實現。 一、圖像與灰度圖像 圖像是指…

    編程 2025-04-28

發表回復

登錄後才能評論