python - kivy 应用可以在电脑上运行,但不能在智能手机上运行
问题描述
希望大家能以某种方式帮助我。
我是 python 的新手,我正在尝试制作一个 Kivy 应用程序。正如标题所说,我的应用程序在我的电脑上运行良好,但是,一旦我在我的 android 上打开它,它就会崩溃(在加载屏幕上)。我知道如何调试应用程序以及如何使用 kivy 启动器,我已经测试了一些应用程序,但是这个有一个我不知道如何解决的问题。
我想做的是:
拾取图像;
将其转换为 numpy 数组;
选择图像的圆形区域并将该区域的像素保存到新列表中;
计算像素的平均值并根据一些参数对图像进行分类。
同样,我可以在我的电脑上做所有这些事情(但如果有人有一些东西可以帮助我提高我的编码技能......我很高兴听到一些提示)。
问题似乎出在我尝试在代码中打开图像的过程中,但我真的不知道为什么,因为图像的目录与我的 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 上运行,以便我可以将它用作我的研究结果。我打算让它变得更好,只是不是现在。
提前感谢您的任何帮助!
解决方案
推荐阅读
- python - 在python中分配和声明变量有什么区别?
- python - 在 python 中对 pandas 数据框中的许多(1e6-1e10)行组合有效地执行廉价计算
- ruby-on-rails - 使用 Joins、Uniq 和 Group_by_month(:created_at)
- python - Python 和 Selenium 表单自动化 - 模态不会保持打开状态
- entity-framework-core - 如何将 UseLoggerFactory 与 UseInternalServiceProvider 结合使用
- jquery - 如何获取数据表行单击数据对象中存在的附加信息(JSON 数据)
- node.js - 此流程对于在 AWS 中发送邮件是否可行?
- python - Tkinter:正确通过实例进行单元测试
- android - 未找到 SettingsFragment 的视图
- javascript - 如何在javascript箭头函数中获取函数名称?