首页 > 解决方案 > kivy 应用可以在电脑上运行,但不能在智能手机上运行

问题描述

希望大家能以某种方式帮助我。

我是 python 的新手,我正在尝试制作一个 Kivy 应用程序。正如标题所说,我的应用程序在我的电脑上运行良好,但是,一旦我在我的 android 上打开它,它就会崩溃(在加载屏幕上)。我知道如何调试应用程序以及如何使用 kivy 启动器,我已经测试了一些应用程序,但是这个有一个我不知道如何解决的问题。

我想做的是:

同样,我可以在我的电脑上做所有这些事情(但如果有人有一些东西可以帮助我提高我的编码技能......我很高兴听到一些提示)。

问题似乎出在我尝试在代码中打开图像的过程中,但我真的不知道为什么,因为图像的目录与我的 main.py 保存的目录相同,所以我虽然只是需要像往常一样打开图像(指示文件的名称)。

这是我的代码:

#-*- coding: utf-8 -*-

import kivy

from kivy.app import App

from kivy.uix.label import Label

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.button import Button

kivy.require('1.9.1')


class MeuApp(App):
    def build(self):
        import matplotlib.pyplot as plt

        import matplotlib.image as mpimg

        import numpy as np
        import math

        img = r"C:\Users\Carlos Foiani\Dropbox\My PC (NOT-CAVIOLA)\Desktop\Letícia\UFABC\Pesquisa\PDPD -2020\24.02.2021\Todas\CN 9_3 - cor.jpg"

        # Leitura da fotografia
        foto = mpimg.imread(img)
        linhas = len(foto)
        colunas = len(foto[0])

        array_pixels = np.array(foto)
        lista_pixels = array_pixels.tolist()

        dentro = []
        # Desenho de um círculo

        for i in range(linhas):
            for j in range(colunas):

                if (i - linhas // 2) ** 2 + (j - colunas // 2) ** 2 <= (colunas // 2) ** 2:
                    dentro.append(lista_pixels[i][j])

                else:
                    foto[i, j] = sum(foto[i, j]) / 3 - 0.5

        # Visualizar a fotografia
        plt.imshow(foto)
        plt.show()

        raio = (colunas // 2)
        area = np.pi * (raio ** 2)
        OD = math.log((255 / (np.mean(dentro))), 10)
        ODI = OD * area

        a = "[b]Intensidade média de luz transmitida pela imagem:[/b] " + str(np.mean(dentro)) + " \n"
        b = "\n [b]Área:[/b] " + str(area) + " μm \n"
        c = "\n [b]Densidade óptica:[/b] " + str(OD) + " \n"
        d = "\n [b]Densidade óptica integrada:[/b] " + str(ODI) + " \n"

        if ODI < 674353.78:
            e = "\n Essa amostra faz parte do grupo [b]POSITIVO[/b] para carcinoma \n"

            return Label(text=a+b+c+d+e, markup=True)

        elif ODI > 674353.78:

            e = "\n Essa amostra faz parte do grupo [b]NEGATIVO[/b] para carcinoma \n"

            return Label(text=a+b+c+d+e, markup=True)


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

这是我希望在智能手机上看到的(以及我在电脑上看到的)

我尝试使用一些 kivy 库(例如 kivy.uix.image)打开图像,但它们不允许我将图像转换为数组。

这只是该应用程序的第一个版本,但我需要它尽快在 android 上运行,以便我可以将它用作我的研究结果。我打算让它变得更好,只是不是现在。

提前感谢您的任何帮助!

标签: pythonandroidkivy

解决方案


推荐阅读