如何使用opencv和kivy访问android的摄像头?

问题描述 投票:0回答:1

我一直在尝试在 kivy 中制作一个 android apk 以通过 opencv 访问移动相机,但我的应用程序在我的手机中崩溃了。它可能无法访问我手机的相机!

import imp
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import MDRaisedButton
from kivy.uix.image import Image
from kivy.clock import Clock
import cv2
from kivy.graphics.texture import Texture

class MainApp(MDApp):
    def build(self):
        layout = MDBoxLayout(orientation='vertical')
        self.image = Image()
        layout.add_widget(self.image)
        layout.add_widget(MDRaisedButton(
            text='Click Here',
            pos_hint={'center_x':.5,'center_y':.5},
            size_hint=(None,None))
        )
        self.capture=cv2.VideoCapture(0)
        Clock.schedule_interval(self.load_video, 1.0/30.0)
        return layout
    def load_video(self, *args):
        ret, frame= self.capture.read()
        self.frame=frame
        buffer=cv2.flip(frame, 0).tostring()
        texture=Texture.create(size=(frame.shape[1],frame.shape[0]),colorfmt='bgr')
        texture.blit_buffer(buffer, colorfmt='bgr',bufferfmt='ubyte')
        self.image.texture=texture


if __name__ == '__main__':
    MainApp().run()

此外,我在 buildozer.spec 文件夹中所做的更改如下:

python opencv kivy apk
1个回答
0
投票

你需要在 p4a 的配方中将 opencv 版本更改为至少 4.5.2。 OpenCV <= 4.5.1 does not support camera on Android. For more info see answer https://stackoverflow.com/a/69445715 无法在安卓手机中使用 cv2.VideoCapture(0) 打开相机

使用 OpenCV < 4.5.2, your

ret, frame= self.capture.read()
返回
(False, None)
然后你得到一个异常访问 None 的一些方法。

© www.soinside.com 2019 - 2024. All rights reserved.