那個(gè)文章看起來有點(diǎn)意思,看了一下這個(gè)簡(jiǎn)要的技術(shù)介紹覺得有點(diǎn)意思。如果有外接攝像頭估計(jì) 也就變成 了一個(gè)視頻監(jiān)控功能了。當(dāng)然性能怎么樣有等觀察,醒醒上可以使用了
安裝cv2可以找opencv這個(gè)package建議使用國(guó)內(nèi)源去安裝不然會(huì)經(jīng)常出現(xiàn)無法下載 安裝的情況
import cv2
from nicegui import ui
video_capture=cv2.VideoCapture(0)
1、cv2.VideoCapture()函數(shù):
cap=cv2.VideoCapture(0)
VideoCapture()中參數(shù)是0,表示打開筆記本的內(nèi)置攝像頭。
cap=cv2.VideoCapture("…/1.avi")
VideoCapture("…/1.avi"),表示參數(shù)是視頻文件路徑則打開視頻。
簡(jiǎn)單理解視頻 其實(shí)就是很多靜態(tài)圖像以一定的速度播放,這樣就變成了動(dòng)畫的視頻
百度百科上的解釋,視頻(Video)是泛指將一系列靜態(tài)影像以電信號(hào)的方式加以捕捉、記錄、處理、儲(chǔ)存、傳送與重現(xiàn)的各種技術(shù)。我們知道根據(jù)視覺暫留原理,當(dāng)連續(xù)的圖像變化每秒超過24幀(frame)畫面以上時(shí),人眼就會(huì)無法辨別出單幅的靜態(tài)畫面。所以看上去會(huì)產(chǎn)生平滑連續(xù)的視覺效果,這樣連續(xù)的畫面叫做視頻。想必大家小時(shí)候都玩過各式各樣的手翻書,它便是最早的動(dòng)畫模式,即是利用視覺暫留原理制成的“不插電”的動(dòng)畫。
我們只需要把圖片展示出來即可。
global video_capture, ui_interactive_image
ret, frame=video_capture.read()
if ret and ui_interactive_image is not None:
_, imencode_image=cv2.imencode('.jpg', frame)
base64_image=base64.b64encode(imencode_image)
base64_image_string='data:image/jpg;base64,' + base64_image.decode(
'ascii')
ui_interactive_image.source=base64_image_string
_, imencode_image=cv2.imencode('.jpg', frame) 獲取攝像頭的數(shù)據(jù)變成 了個(gè)圖片
ui_interactive_image=ui.interactive_image()
Python使用NiceGUI實(shí)現(xiàn)電腦攝像頭畫面監(jiān)控
但是程序一啟動(dòng)就執(zhí)行監(jiān)控了,如何點(diǎn)擊開始就執(zhí)行監(jiān)控
官方例子中timer這個(gè)定時(shí)器,去顯示系統(tǒng)時(shí)間
from datetime import datetime
from nicegui import ui
label=ui.label()
ui.timer(1.0, lambda: label.set_text(f'{datetime.now():%X}'))
ui.run()
查看ui.timer組件的文檔 發(fā)現(xiàn)文檔 中控制timer的激活狀態(tài)的屬性是 active
Properties
interval: BindableProperty
Methods
activate() -> None
Activate the timer.
cancel() -> None
Cancel the timer.
deactivate() -> None
Deactivate the timer.
冼將timer默認(rèn)不激活
timer=ui.timer(interval=0.1, callback=lazy_update,active=False)
點(diǎn)擊開關(guān)來激活 timer定時(shí)器
ui.switch('active').bind_value_to(timer, 'active')
最近修改一下布局
with ui.row().classes("self-center"):
ui.switch('active').bind_value_to(timer, 'active')
ui.button('結(jié)束監(jiān)控', on_click=timer.cancel)
不啟用攝像頭時(shí)顯示默認(rèn)圖片
開始顯示攝像頭畫面
控?cái)z像頭除了作為監(jiān)控錄像外,就沒有其他用處了嘛.
有,通過OBS取流還可以化身電腦攝像頭,下面是具體操作步驟,操作如下:
這里用的是天視通的槍機(jī),IP地址:192.168.1.123.此功能要求攝像頭必須支持RTSP視頻流.
打開OBS Studio
在”來源”里添加”媒體源”,
在”創(chuàng)建或選擇源”窗口選擇新建,輸入天視通1,作為新的源名字,
隨后的對(duì)話框里取消本地文件選項(xiàng),就會(huì)出現(xiàn)一個(gè)輸入欄,
在這里輸入攝像頭的rtsp地址(天視通默認(rèn)RTSP地址rtsp://admin:123456@192.168.0.123:554/mpeg4,把其中IP改為攝像頭真實(shí)IP,粘貼到輸入欄,其他品牌攝像頭方法類似)
左側(cè)是預(yù)覽畫面,右側(cè)是輸出畫面,點(diǎn)擊右側(cè)”啟動(dòng)虛擬攝像機(jī)”
以QQ為例,QQ設(shè)置里默認(rèn)的攝像頭是筆記本電腦自帶的攝像頭,點(diǎn)擊選擇OBS Virtual Camera,這樣就可以利用監(jiān)控?cái)z像頭視頻了.
.
當(dāng)然,OBS可以實(shí)現(xiàn)的功能還有很多,有興趣的朋友可以嘗試下.