
- 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 - Garden
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 小部件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 相機處理
Kivy 框架透過特定平臺的提供程式支援相機硬體。“opncv-python”包可在大多數作業系統上為 Kivy 提供相機支援。因此,建議在 Kivy 的工作環境中安裝 opencv-python 包。
在本章中,我們將使用 Kivy 庫的 Camera 類構建一個相機應用程式。相機小部件以及一個切換按鈕和一個普通按鈕放置在一個垂直的盒子佈局中,以構建應用程式介面。
相機例項以初始播放狀態 True 開始,這意味著應用程式視窗將在載入後立即從相機啟動影片流。切換按鈕在按下時停止相機。它繫結到 play() 方法。只有在相機正在播放時,“捕獲”按鈕才處於啟用狀態。
def play(self, instance): if instance.state=='down': self.mycam.play=False instance.text='Play' self.cb.disabled=True else: self.mycam.play=True instance.text='Stop' self.cb.disabled=False
“捕獲”按鈕透過呼叫 Camera 物件的 export_to_png() 方法將當前幀儲存到 PNG 檔案。
捕獲影像後,Kivy 會彈出一個標題為“影像已捕獲”的訊息框。
def capture(self, instance): if self.tb.text == 'Stop': self.mycam.export_to_png("IMG.png") layout = GridLayout(cols=1) popup = Popup( title='Image Captured', title_size=24, content=layout, auto_dismiss=True, size_hint=(None, None), size=(300, 100) ) popup.open()
其餘程式碼涉及在 build() 方法中組成應用程式介面。
示例
完整的程式碼如下所示:
from kivy.app import App from kivy.lang import Builder from kivy.uix.boxlayout import BoxLayout from kivy.uix.togglebutton import ToggleButton from kivy.uix.button import Button from kivy.uix.popup import Popup from kivy.uix.camera import Camera from kivy.core.window import Window Window.size = (720, 400) class TestCamera(App): def build(self): box = BoxLayout(orientation='vertical') self.mycam = Camera(play=True, resolution=(640, 480)) box.add_widget(self.mycam) self.tb = ToggleButton( text='Stop', size_hint_y=None, height='48dp', on_press=self.play ) box.add_widget(self.tb) self.cb = Button( text='Capture', size_hint_y=None, height='48dp', disabled=False, on_press=self.capture ) box.add_widget(self.cb) return box def play(self, instance): if instance.state == 'down': self.mycam.play = False instance.text = 'Play' self.cb.disabled = True else: self.mycam.play = True instance.text = 'Stop' self.cb.disabled = False def capture(self, instance): if self.tb.text == 'Stop': self.mycam.export_to_png("IMG.png") layout = GridLayout(cols=1) popup = Popup( title='Image Captured', title_size=24, content=layout, auto_dismiss=True, size_hint=(None, None), size=(300, 100) ) popup.open() TestCamera().run()
輸出
應用程式啟動時載入相機例項。請注意,根據系統和相機裝置的不同,啟動可能需要幾秒鐘。切換按鈕的標題為“停止”,捕獲按鈕已啟用。

如果按下“停止”按鈕,捕獲按鈕將被停用。啟用後,按下“捕獲”按鈕。當前幀將儲存為“img.png”,並彈出一個對話方塊。

廣告