我已经工作了几天,试图在 python-for-android 中使用 cv2.VideoCapture()。我正在使用带有 buildozer 的 kivy 为 android 构建 apk。这是我的代码
from kivy.app import App
from kivy.uix.image import Image
from kivy.clock import Clock
from kivy.graphics.texture import Texture
import cv2
class KivyCamera(Image):
def __init__(self, capture, fps, **kwargs):
super(KivyCamera, self).__init__(**kwargs)
self.capture = capture
Clock.schedule_interval(self.update, 1.0 / fps)
def update(self, dt):
print 'hello'
ret, frame = self.capture.read()
print frame
if ret:
# convert it to texture
buf1 = cv2.flip(frame, 0)
buf = buf1.tostring()
image_texture = Texture.create(
size=(frame.shape[1], frame.shape[0]), colorfmt='bgr')
image_texture.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建基于Kivy和OpenCv的示例Android应用程序:
import kivy
from kivy.uix.button import Button
import cv2
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self):
return Button(text='Hello!',
background_color=(0, 0, 1, 1),
font_size=150)
if __name__ == '__main__':
MyApp().run()
Run Code Online (Sandbox Code Playgroud)
在桌面上运行此示例时,它工作正常,但是当我使用buildozer构建APK并尝试在手机上运行时,应用程序会立即打开和关闭.我的构建器设置是:
[app]
title = MyTest
package.name = kivycrash2
package.domain = org.test
source.dir = .
source.include_exts = py,png,jpg,kv,atlas
version = 0.1
requirements = kivy, numpy, cv2
orientation = landscape
Run Code Online (Sandbox Code Playgroud)
如果我从代码中删除"import cv2"并从buildozer中删除cv2和numpy要求,则生成的apk在手机上运行正常.
是否有可能在Android设备上使用opencv与Kivy一起工作?buildozer是否使用我的系统上安装的opencv版本(opencv 3)?
谢谢.