質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Python 2.7

    1349questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Raspberry Pi

    904questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

kivy canvas画像が表示されなかった原因

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 278

BlueBits

score 41

表示されなかったは判明しました。ただそれがなぜ影響したかがよくわかりません
(追記 原因は回答内のコメントに記載)
以下のRaspberryPi3環境にpython、Kivyを入れています。
(一部省略しています)

$python -V
Python 2.7.13

$pip list
Package       Version    
------------- -----------
certifi       2018.4.16  
chardet       3.0.4      
cryptography  1.7.1      
Cython        0.28.3     
docutils      0.14       
enum34        1.1.6      
idna          2.7        
ipaddress     1.0.17     
keyring       10.1       
keyrings.alt  1.3        
Kivy          1.11.0.dev0
Kivy-Garden   0.1.4      
libusb1       1.6.4   
ndeflib       0.3.2          
pip           10.0.1     
pyasn1        0.1.9      
pycrypto      2.6.1      
pyDes         2.0.1      
Pygments      2.2.0      
pygobject     3.22.0     
pyserial      3.4        
pyxdg         0.25       
requests      2.19.1     
RPi.GPIO      0.6.3      
SecretStorage 2.3.1      
setuptools    33.1.1     
six           1.10.0     
urllib3       1.23       
wheel         0.29.0     

上記の環境で以下のpythonファイルを動作させました。
main.kv

#:kivy 1.11
#-*- coding: utf-8 -*-
#:import kivy kivy
FloatLayout:
    canvas:
        Rectangle:
            source:'./bg_1900x1200.png'
            size: self.size
    Label:
        text_size: self.size
        font_size: 24
        text: 'Ver0.0.1'
        valign: 'middle'

main.py

#-*- coding: utf-8 -*-
from kivy.app import App

class MainApp(App):
    pass

MainApp().run()

このプログラムを実行すると、同一フォルダにあるbg_1900x1200.png(W1900xH1200)画像が表示されるはずです。しかしながら表示されず黒背景になりました。
また、MacBook環境(python 2.7.15,Kivy 1.11.0.dev0)では表示されました。

 結果1

画像サイズ 1369x864サイズ以下では表示されました。
また、縦X横のピクセル内であれば表示されました。(1400x 840など)

 結果2

main.kvの Label:text_size: self.size がおかしかった
text_size項目の削除、もしくはself.sizeー>self.width,Noneに変更

 ご質問

最終的に、text_size項目の設定が不適切だったという考えなのですが
どんな風に作用して表示されなかったのかわかりますでしょうか?
・MacBook環境で表示された理由(pythonバージョンの違いも予測されます)

今後、作っていく上で注意する要素かどうか判別したいです。

 追記 2018/7/12

回答いただいた内容通りRaspberryの性能の原因が大きそうです。
OpenGL部分のログです。

MacBook

[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <2.1 INTEL-10.34.27>
[INFO   ] [GL          ] OpenGL vendor <Intel Inc.>
[INFO   ] [GL          ] OpenGL renderer <Intel(R) Iris(TM) Graphics 6100>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <1.20>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>

Raspberry

[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <OpenGL ES 2.0>
[INFO   ] [GL          ] OpenGL vendor <Broadcom>
[INFO   ] [GL          ] OpenGL renderer <VideoCore IV HW>
[INFO   ] [GL          ] OpenGL parsed version: 2, 0
[INFO   ] [GL          ] Shading version <OpenGL ES GLSL ES 1.00>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <8>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

多分、大きなTextureを作り過ぎてRaspberryPiの能力の限界に達したんじゃないかと思います。結果1はもちろん結果2もそれを思わせるので。

Labelは内部で文字列の描かれたTextureを作るのですが、既定ではそのTextureは文字列が収まるだけの最小限の大きさになってます。ただtext_sizeが指定されているとTextureの大きさはその値に必ず従います。なのでtext_size: self.sizeLabelの大きさと同じ大きさでTextureを作るよう指示した事になります。そしてLabelの大きさなんですが、プログラムをFullscreenで実行しているならおそらくRaspberryPiのDisplayと同じになっているので、結果RaspberryPiのDisplayと同じ大きさのTextureを作るように指示した事になり、能力の限界に達したと私は考えてます。

self.width,Noneで上手くいったのも、これによってTextureの高さが文字列が収まる最小限の大きさになり、RaspberryPiの限界に達しなくなったと考えるとつじつまが合います。

もしLabelの文字列の位置揃えをしたいが為にtext_sizeをいじっているのならやめた方がいいかもしれません。上に書いたように無駄に大きなTextureを作ってしまうので。代わりに以下の様にLabelAnchorLayoutの中に入れるのをお薦めします。

FloatLayout:
    AnchorLayout:
        anchor_x: 'right'
        anchor_y: 'center'
        Label:
            size: self.texture_size
            size_hint: None, None
            font_size: 24
            text: 'Ver0.0.1'

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/12 08:29

    ありがとうございます。あのあと色々調べて他の場合にも発生(大きな画像の複数枚使用など)を確認しました。
    調べた結果詳細まで突き止めませんでしたが概ねその通りのようです。
    (追記でOpenGLのMac,RaspberryPの差を明記します。)
    一応、対策の1つに ImageWidgetに、nocache=Trueを入れると表示されました。
    AnchorLayoutにしてみます。

    キャンセル

  • 2018/07/12 08:39

    すみません。まだ編集中なのにベストアンサーにしてしまいました。

    キャンセル

  • 2018/07/12 08:50 編集

    いえいえ。

    なるほどnocacheは知らなかったです。

    キャンセル

  • 2018/07/12 09:05

    ありがとうございました。
    LabelWidgetを使用する際はTextureサイズを意識して使用するようにいたします。
    Mac環境は乱暴に設定したけど、性能面で助かったということですね。

    キャンセル

  • 2018/07/12 09:16

    ですね、多分ですが(^.^;)(私はRaspberryPi持ってないので)

    後、もしかしたら知ってるかもしれませんが
    https://qiita.com/gotta_dive_into_python/items/caa3e0f41ddfaedcdb95#inspector
    を使うとプログラム実行中に色々WidgetのPropertyを見れて便利ですよ。これでLabelのtexture_sizeを見てやれば現在のTextureの大きさを確かめられます。

    キャンセル

  • 2018/07/12 16:04

    ありがとうございます。最近pyton,kivyを始めたばっかでしたので知りませんでした。ありがとうございます。Texture調べるときに半透明のcanvasで表示すればいいとおもっていました。

    キャンセル

  • 2018/07/19 08:14

    追記です。GUIに設定したメモリが少なすぎました、
    raspi-configであげたところnocacheなしでも大丈夫でした。
    cache化しようにもメモリが足りなすぎてという感じでしょうか。。

    キャンセル

  • 2018/07/19 21:44 編集

    そう思います。
    話は変わるんですが、他の質問の時も思ったのですが、何でも調べて対処するのが速いですね。多分プログラミングを仕事にされてるのでしょうか

    キャンセル

  • 2018/07/20 14:24

    独学でやっているせいか、突っかかることが多く調べる癖があるからでしょうか?仕事は簡単なプログラミング関連ならありますが専門ではありません。

    キャンセル

  • 2018/07/20 15:48

    なるほど。その調べる癖のおかげでこちらも勉強になりました。(特にClockの幾つかのMethodがMultiThread対応である事を知れたのは大きいです)。ありがとう

    キャンセル

  • 2018/07/20 17:06

    こちらこそありがとうございました。先人の知恵ありきでやっていますので非常に助かっております。
    今も思いつきでLive2Dみたいなことをkivyできないかと考えていたら、spineがあるのを知って食指が動いています。

    キャンセル

同じタグがついた質問を見る

  • Python 2.7

    1349questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Raspberry Pi

    904questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。