通过 Kivy 访问 Android 摄像头

新手上路,请多包涵

我正在寻找一种解决方法来 通过 kivy 访问 Android 相机,或者我可以 与 kivy 集成 以访问相机的库。

我正在为 android 开发一个应用程序,但使用 python-kivy 作为 UI,

任何事情都会非常感激,

多谢。

原文由 Plaix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

这是我的示例代码,适用于 Android。只需导入该文件 https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py 另外,不要忘记添加 CAMERA 权限以显示。

主要文件:

 __version__ = '1.0'

import kivy

# importing file from https://github.com/kivy/plyer/blob/master/plyer/platforms/android/camera.py
# I downloaded it and saved it in the same directory:
from camera import AndroidCamera

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty, StringProperty

import base64

class MyCamera(AndroidCamera):
    pass

class BoxLayoutW(BoxLayout):
    my_camera = ObjectProperty(None)
    # /sdcard means internal mobile storage for that case:
    image_path = StringProperty('/sdcard/my_test_photo.png')

    def __init__(self, **kwargs):

        super(BoxLayoutW, self).__init__()

        self.my_camera = MyCamera()

    def take_shot(self):
        self.my_camera._take_picture(self.on_success_shot, self.image_path)

    def on_success_shot(self, loaded_image_path):
        # converting saved image to a base64 string:
        image_str = self.image_convert_base64
        return True

    #converting image to a base64, if you want to send it, for example, via POST:
    def image_convert_base64(self):
        with open(self.image_path, "rb") as image_file:
            encoded_string = base64.b64encode(image_file.read())
        if not encoded_string:
            encoded_string = ''
        return encoded_string

if __name__ == '__main__':

    class CameraApp(App):
        def build(self):
            main_window = BoxLayoutW()
            return main_window

    CameraApp().run()

相机.kv:

 <BoxLayoutW>:

    Button:
        text: 'shot'
        on_release: root.take_shot()

原文由 megastruktur 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏