日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python人脸识别程序如何嵌入到app_只用Python就能写安卓,简单几步实现人脸识别的App...

發布時間:2025/3/12 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python人脸识别程序如何嵌入到app_只用Python就能写安卓,简单几步实现人脸识别的App... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近閑來無事,研究研究在安卓上跑Python。

想起以前玩過的kivy技術,kivy[1]是一個跨平臺的UI框架。當然對我們最有用的是,kivy可以把python代碼打包成安卓App。但是由于安卓打包的工具鏈很長,包括android sdk打包java代碼、ndk編譯python、 編譯各種python依賴包,經常花一整天從入門到放棄。這次使出認真研究的心態,終于找到一個解決方案,于是有了這篇文章:

?只要會python就能寫安卓App,無需安卓開發基礎,無需編譯?手機上也有交互式python解釋器,直接調試python代碼?可以使用各種python庫,包括numpy/opencv等機器學習包?可以與安卓接口交互,使用手機硬件,比如攝像頭

那么我們就以人臉識別App為例,看看如何簡單幾步搞定。先看看成品的效果:

第一步:安裝airport.apk

AirPort是我編譯好的一個安卓App,里面包含了python解釋器和一些常用的python庫。

airport.apk現在先放在我的微信公眾號Meteorix,回復apk即可下載

第二步:連接手機的python解釋器

啟動手機上的AirPort應用,就會運行python解釋器。我內置了一個ssh服務器,用于調試代碼非常方便。應用啟動時會顯示手機的ip地址。

在電腦上使用ssh命令,就可以連接到手機。

注意:確保你的手機和電腦在同一局域網中。

#在電腦上連接手機,注意這里ip需要替換成AirPort顯示的ipssh -p 8000 admin@192.168.31.101#輸入密碼meteorix

然后你就可以在手機上盡情使用python了,比如試試

>>>import os>>>os.getcwd()'/data/data/org.airtest.airport/files/app'>>>import requests>>>r = requests.get("https://www.baidu.com")>>>r.status_code200

第三步: 一個攝像頭的App

在kivy的官方文檔中,我們可以找到這樣一個攝像頭的example[2]

代碼非常簡單,Builder.load_string函數加載了一段配置,這是kivy提供的UI定義語言kivy language。點擊UI上創建的Capture按鈕,回調CameraClick.capture()函數,用python實現函數功能。

from kivy.app import Appfrom kivy.lang import Builderfrom kivy.uix.boxlayout import BoxLayoutimport timeBuilder.load_string(''':orientation: 'vertical'Camera:id: cameraresolution: (640, 480)play: FalseToggleButton:text: 'Play'on_press: camera.play = not camera.playsize_hint_y: Noneheight: '48dp'Button:text: 'Capture'size_hint_y: Noneheight: '48dp'on_press: root.capture()''')class CameraClick(BoxLayout):def capture(self):'''Function to capture the images and give them the namesaccording to their captured time and date.'''camera = self.ids['camera']timestr = time.strftime("%Y%m%d_%H%M%S")camera.export_to_png("IMG_{}.png".format(timestr))print("Captured")class TestCamera(App):def build(self):return CameraClick()TestCamera().run()

將這段代碼保存為kvmain.py文件,我們可以直接在電腦上運行。如果你的電腦有攝像頭,就可以看到攝像頭App的效果。

第四步:推送代碼到安卓手機

這一步需要做的就是,把這個攝像頭App推送到安卓手機上,然后啟動AirPort應用。

如果你對安卓手機有一丟丟的了解,你應該用過adb工具。這里原理就是使用adb連接手機,將kvmain.py推送到手機/sdcard/kv/kvmain.py路徑。然后啟動AirPort應用,就會加載這個路徑下的python代碼。

1.可以從這里[3]下載對應操作系統的adb工具。2.用usb線將手機連接到電腦,打開手機的開發者選項/usb調試開關,然后檢查adb連接。看到device就說明連接正常,如果是其他狀態,需要稍微檢查一下手機配置。

adb devices # 查看adb連接List of devices attachedABCDEFGHIJK device

3.將kvmain.py推送到手機/sdcard/kv/kvmain.py路徑

adb shell mkdir -p /sdcard/kvadb push kvmain.py /sdcard/kv/kvmain.py

如果你不知道上面在說什么,可以先google/baidu一下adb使用教程。

重新啟動手機上的AirPort應用,即可看到我們的攝像頭App運行在手機上了。

第五步:增加人臉識別功能

這一步,我們主要用到了opencv的人臉識別接口,詳細原理參考opencv tutorial[4]

對我們來說,這里只用了以下簡單的代碼

import cv2detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')img = cv2.imread('faces.jpg')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = detector.detectMultiScale(gray, 1.3, 5)print(faces)

然后改造一下我們的攝像頭App:

1.讀取攝像頭的圖片,調用opencv人臉識別接口2.將識別出來的人臉坐標,畫到手機屏幕的對應位置上

bbox = BoundingBox(name=face_name, size_hint=(None, None))...for loc in faces:# calculate position of the facex, y, w, h = loct = int(anchor_t - y*sh)b = int(anchor_t - (y+h)*sh)r = int(anchor_l + x*sw)l = int(anchor_l + (x+w)*sw)# update bounding boxbbox.pos = (int(l), int(b))bbox.size = (int(r-l), int(t-b))...

當然,我們還需要針對安卓手機進行一些調試。最終的代碼我放在了github倉庫airface[5]https://github.com/Meteorix/airface

再次,我們推送代碼到手機上

adb push src/* /sdcard/kv/

重啟應用就可以看到文初展示的GIF效果了。

What's Next?

Python本來就能做很多有趣的事情,現在python開發者也能直接寫安卓App啦。

我們稍微開點腦洞:

?訓練一個識別你家所有人臉的分類器,甚至是貓臉(對,opencv內置了貓臉識別)?用python寫個語音助手的app,私人定制的小愛同學

腦洞更大點:

?在手機上用python跑TensorFlow??寫一個真正的手機微信機器人?

目前我在使用這種方式,寫寫人工智能的安卓demo。也歡迎大家嘗試用python寫安卓app,探索更多可能性,有問題留言交流。

References

[1] kivy: https://github.com/kivy/kivy[2] 攝像頭的example: https://kivy.org/doc/stable/examples/gen__camera__main__py.html[3] adb下載: https://github.com/AirtestProject/Airtest/tree/master/airtest/core/android/static/adb[4] opencv tutorial: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_objdetect/py_face_detection/py_face_detection.html[5] 源碼倉庫: https://github.com/Meteorix/airface

總結

以上是生活随笔為你收集整理的python人脸识别程序如何嵌入到app_只用Python就能写安卓,简单几步实现人脸识别的App...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。