下午好,有一个使用python,kivy和opencv编写的小应用程序。 buildozer的构建没有错误,但是当我在手机上启动应用程序时,它崩溃并显示以下错误:
04-12 18:44:54.848 5697 5739 I python:文件 “ /home/max/desktop/finish/.buildozer/android/app/main.py”,模块第13行
04-12 18:44:54.848 5697 5739我python: ModuleNotFoundError:没有名为“ cv2”的模块
已安装Opencv,我使用PyCharm编写代码。 可能是什么问题?
需求= python3,kivy,numpy,opencv
代码(如有必要):
import kivy.core.text
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.scrollview import ScrollView
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.base import runTouchApp
from kivy.clock import Clock
from kivy.uix.image import Image
import time
import cv2
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics.texture import Texture
Builder.load_string('''<MainScreen>:
BoxLayout:
orientation: "vertical"
KivyCamera:
Label:
height: 20
size_hint_y: None
text: 'Cam_01'
BoxLayout:
orientation: "horizontal"
height: 50
size_hint_y: None
Button:
text: "Options"
size_hint_y: None
width: 150
height: 50
on_release: root.manager.current = 'options'
<OptionsScreen>
GridLayout:
rows:3
cols:1
padding: 10
spacing: 10
Button:
text: "Main Screen"
size_hint_y: None
width: 150
height: 50
on_release: root.manager.current = 'main'
Button:
text: "Alarm"
size_hint_y: None
width: 150
height: 50
on_release: root.manager.current = 'alarm'
Button:
text: "test"
size_hint_y: None
width: 150
height: 50
<AlarmScreen>
GridLayout:
rows:3
cols:1
padding: 10
spacing: 10
Button:
text: "Main Screen"
size_hint_y: None
width: 150
height: 50
on_release: root.manager.current = 'main'
Button:
text: "Options"
size_hint_y: None
width: 150
height: 50
on_release: root.manager.current = 'options'
Button:
text: "test"
size_hint_y: None
width: 150
height: 50''')
class KivyCamera(Image):
def __init__(self, **kwargs):
super(KivyCamera, self).__init__(**kwargs)
self.capture = cv2.VideoCapture(1)
self.fps = 30
Clock.schedule_interval(self.update, 1.0 / self.fps)
def update(self, dt):
ret, frame = self.capture.read()
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')
# display image from the texture
self.texture = image_texture
self.canvas.ask_update()
class MainScreen(Screen):
pass
class OptionsScreen(Screen):
pass
class AlarmScreen(Screen):
pass
class Project_1App(App):
def build(self):
screenManager = ScreenManager()
screenManager.add_widget(MainScreen(name="main"))
screenManager.add_widget(OptionsScreen(name="options"))
screenManager.add_widget(AlarmScreen(name="alarm"))
return screenManager
Project_1App().run()