
- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用程式
- Kivy - Hello World
- Kivy - 應用生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 元件
- Kivy - 元件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 旋轉木馬
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 微調器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤頁面板
- Kivy - 散點圖
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色拾取器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 攝像頭
- Kivy - 樹形檢視
- Kivy - reStructuredText
- Kivy - 操作欄
- Kivy - 播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控波紋
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入記錄器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 箱式佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 頁面佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用程式和專案
- Kivy - 繪圖應用程式
- Kivy - 計算器應用程式
- Kivy - 計時器應用程式
- Kivy - 攝像頭處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 攝像頭
使用 Kivy 中的 Camera 元件,可以顯示來自攝像頭裝置的影片流。Kivy 可能需要一些時間來初始化攝像頭裝置,並在之後更新元件紋理。
Camera 類在 "kivy.uix.camera" 模組中定義。
from kivy.uix.camera import Camera cam = Camera(**kwargs)
如果系統找到多個攝像頭裝置,則需要透過其索引指定要使用的攝像頭。
cam = Camera(index=1)
您還可以使用 resolution 引數指定攝像頭解析度 -
cam = Camera(index=1, resolution=(640, 480))
kivy.uix.camera.Camera 類是來自 "kivy.core.camera" 模組的核心 Camera 類的具體實現,並執行初始化和幀捕獲功能。
Kivy 需要找到合適的攝像頭提供程式才能檢測硬體。為此,請安裝最新版本的 opencv-python 包,該包還安裝其依賴項包,包括 NumPy。
pip install opencv-python
要在應用程式視窗上開始從攝像頭流式傳輸饋送,請將 Camera 物件的 play 屬性設定為 True,並將其設定為 False 以停止饋送。
cam.play = True
要將攝像機流的快照捕獲到影像,請使用 export_to_png() 方法。指定要儲存到的檔名。
Camera 類定義了以下屬性 -
index - 使用的攝像頭的索引,從 0 開始。將其設定為 -1 以允許自動選擇。
play - 布林值,指示攝像頭是否正在播放。您可以透過設定此屬性來啟動/停止攝像頭 -
# create the camera, and start later (default) cam = Camera() # and later cam.play = True # to sop cam.play = False
resolution - 呼叫攝像頭時要使用的首選解析度。如果您使用 [-1, -1],則解析度將為預設解析度。要設定所需的解析度,前提是裝置支援 -
cam = Camera(resolution=(640, 480))
示例
以下示例程式碼在垂直 BoxLayout 中添加了一個 Camera 元件和一個 ToggleButton。繫結到切換按鈕的回撥在按鈕按下時將攝像頭物件的 play 屬性設定為 True,否則影片將停止。
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.togglebutton import ToggleButton from kivy.uix.camera import Camera from kivy.core.window import Window Window.size = (720,350) class TestCameraApp(App): def build(self): box=BoxLayout(orientation='vertical') self.mycam=Camera(play=False, resolution= (640, 480)) box.add_widget(self.mycam) tb=ToggleButton(text='Play', size_hint_y= None, height= '48dp') tb.bind(on_press=self.play) box.add_widget(tb) return box def play(self, instance): if instance.state=='down': self.mycam.play=True instance.text='Stop' else: self.mycam.play=False instance.text='Play' TestCameraApp().run()
輸出
執行程式碼並檢查輸出 -

您還可以使用 "kv" 語言指令碼設計應用程式窗口布局。將以下指令碼另存為 "TestCamera.kv",註釋掉 build() 方法中的程式碼,並在其中放置一個 "pass" 語句。
BoxLayout: orientation: 'vertical' Camera: id: camera resolution: (640, 480) play: False ToggleButton: text: 'Play' on_press: camera.play = not camera.play size_hint_y: None height: '48dp'