kivyキャンバスからケラスモデル(ニューラルネットワーク)にピクセルを渡したいと思います。シンプルなアプローチは、イメージをpngにエクスポートし、scikit-imageまたはPILを使用してイメージを読み取ることです。このような冗長なステップがなければ、メモリ内でこれを行うことができますか?すべてがimg
がPNGとして保存して、動作するかどうかをチェックするためにはkivyキャンバステクスチャのメモリへの処理
fbo = Fbo()
fbo.add(self.canvas)
fbo.draw()
img = Image.frombytes('RGBA', img_size, fbo.pixels)
:これは私が思い付いたものです
。残念ながら、それは完全な混乱であることが判明しました。私の質問は、どうすれば正しく動作するのですか?
from PIL import Image
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Line, Fbo
from kivy.uix.floatlayout import FloatLayout
class Painter(Widget):
def on_touch_down(self, touch):
with self.canvas:
touch.ud['line'] = Line(points=(touch.x, touch.y), width=50)
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
def save(self, obj):
fbo = Fbo()
fbo.add(self.canvas)
fbo.draw()
img = Image.frombytes('RGBA', self.size, fbo.pixels)
img.save('img.png')
class App(App):
def build(self):
layout = FloatLayout()
painter = Painter()
btn = Button(text='Save', on_release=painter.save, size_hint=(0.2,0.2))
layout.add_widget(painter)
layout.add_widget(btn)
return layout
App().run()
はい、うまくいきますが、郵便局を経由してフラットメイトに小包を送るのと同じように見えます。この 'export_to_png'メソッドは既にキャンバスを符号なしバイトに変換します。問題は、それらを直接使用する方法です – user8856277