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

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

ただいまの
回答率

90.86%

  • Python

    5888questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Python Plyerにて画面にカメラの映像を出したい

解決済

回答 1

投稿

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

こんにちは
Plyerのカメラ機能を使って画面にカメラの映像を写したいと思ってます。
自分の考えている方法はカメラクラスを映し出したいクラスにidなどで繋げることかなと考えていますが、どうにも成功しません。

もしわかるかたいましたら、ぜひ情報をお願いします。

from os import getcwd
from os.path import exists
from os.path import splitext

import kivy


from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup
from kivy.logger import Logger

from plyer import camera


class CameraDemo(FloatLayout):
    def __init__(self):
        super(CameraDemo, self).__init__()
        self.cwd = getcwd() + "/"
        self.ids.path_label.text = self.cwd

    def do_capture(self):
        filepath = self.cwd + self.ids.filename_text.text
        ext = splitext(filepath)[-1].lower()

        if(exists(filepath)):
            popup = MsgPopup("Picture with this name already exists!")
            popup.open()
            return False

        try:
            camera.take_picture(filename=filepath,
                                on_complete=self.camera_callback)
        except NotImplementedError:
            popup = MsgPopup(
                "This feature has not yet been implemented for this platform.")
            popup.open()

    def camera_callback(self, filepath):
        if(exists(filepath)):
            popup = MsgPopup("Picture saved!")
            popup.open()
        else:
            popup = MsgPopup("Could not save your picture!")
            popup.open()


class CameraDemoApp(App):
    def __init__(self):
        super(CameraDemoApp, self).__init__()
        self.demo = None

    def build(self):
        self.demo = CameraDemo()
        return self.demo

    def on_pause(self):
        return True

    def on_resume(self):
        pass


class MsgPopup(Popup):
    def __init__(self, msg):
        super(MsgPopup, self).__init__()
        self.ids.message_label.text = msg


if __name__ == '__main__':
    CameraDemoApp().run()
#camerademo.kv

<CameraDemo>:
    FloatLayout:
        Label:
            id: path_label
            text: 'Working Directory:'
            pos_hint: {'x': 0.25, 'y': 0.7}
            size_hint: 0.5, 0.1

        TextInput:
            id: filename_text
            text: 'enter_file_name_here.jpg'
            pos_hint: {'x': 0.25, 'y': .6}
            size_hint: 0.5, 0.1
            multiline: False

        Button:
            text: 'Take picture from camera!'
            pos_hint: {'x': 0.25, 'y': .3}
            size_hint: 0.5, 0.2
            on_press: root.do_capture()

<MsgPopup>:
    size_hint: .7, .4
    title: "Attention"

    BoxLayout:
        orientation: 'vertical'
        padding: 10
        spacing: 20

        Label:
            id: message_label
            size_hint_y: 0.4
            text: "Label"
        Button:
            text: 'Dismiss'
            size_hint_y: 0.4
            on_press: root.dismiss()
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

0

plyerのAPIを見たところ、カメラで撮ったものをファイルに保存する機能しかなさそうです。撮ったものを表示したいならkivy.uix.cameraがいいと思いますよ。それと別の投稿で "kivy.uix.camera が壊れている" と言っていますが、情報源を教えてくれませんか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/29 12:47

    回答ありがとうございます。
    Kivy IRCにて質問を投げたところ
    Camera seems to be broken. Try Plyer
    との回答が返ってきました。
    https://botbot.me/freenode/kivy/search/?q=broken

    実は自分もどうしてもuix cameraを使用したいと考えていました。

    https://teratail.com/questions/106841
    こちらで書いた自分の質問をIRCで同じく聞いて見たのですが、
    その際に帰ってきた回答でした。

    キャンセル

  • 2017/12/29 12:50

    iOS実機にて(xcodeでデバッグにて)カメラ機能を起動した際に
    クラッシュしたのでエラーログを見るとcv2モジュールが存在しない旨のエラーが出ていました。

    iOSにcv2を入れる方法ももしお分かりであれば教えていただけますか?

    キャンセル

  • 2017/12/29 14:19 編集

    > iOSにcv2を入れる方法ももしお分かりであれば教えていただけますか?

    私はAppleの機器を一切持っていないので分かりませんが、Androidであればbuildozer.specのrequirementsの行に必要な外部moduleを書くことでアプリケーションに組み込むことができます。例えば

    requirements = kivy,opencv

    のような感じで。もしやってみてopencvを組み込むのが無理そうならplyerでいいと思いますよ。




    上のplyerを使ったコードですが「どうにも成功しません」って具体的にどういった状態ですか?ログには何もエラーや警告が出てないんですか?この情報だけだとこちらも何もしようがないです。plyerのcameraが画像ファイルの書き出しに成功しているのなら、それをkivy.uix.imageで表示してあげればいいと思いますよ。

    キャンセル

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    kivy: コードをどこに書けばいいのかわかりません;_;

    環境 kivy1.9.0 python3.5.2 質問内容 とりあえず、コードをば、、、 まずTty.py # This Python file uses

  • 解決済

    kivyのテキスト1行入力ボックスを作るコード

    kivyを勉強中なのですが、tkinterのEntryのようにテキスト1行入力ボックスを作りたくて、公式サイトをみると一応作れるようにはなっているみたいなのですが、よくわかりません

  • 解決済

    Python Kivy | Screen内のidが取得できない

    Kivyについてですが、タイトル通りの状態が続いています。 単純にkivyファイルにてidを設定後、クラスのルート位置にid名を設定し pythonファイルで受け取れるようにしたの

  • 解決済

    [kivy][python]kivyファイルを複数使いたい

    前提・実現したいこと 今、kivyファイルを1枚で作ってます。 ScreenManagerで画面切り替えをできるようにしています。 test.kvの中身が増えてきて、ごちゃごちゃし

  • 解決済

    Kivyを終了させる方法を教えてください

    前提・実現したいこと PythonにKV languageを直書きしています。なので、プログラム自体の終了(Ctrl+Cなど)ではなく、Kivyで作成したアプリのみを終了させる(窓

  • 解決済

    [python2.7][kivy] 別ディレクトリから画像を呼び出し&並べて表示

    前提・実現したいこと 現在、別ディレクトリにある画像の表示を全て手入力で行なっています。(図1) Buttonにしているのは仕様です。 見た目はこのままで、自動化させて行きたいです

  • 解決済

    Kivy 複数のScrollViewのスクロール量を同期させたい。

    KivyのScrollViewが複数あったとして、それらのスクロール量を同期させるためのコードを書いているのですが、リアルタイムで同期するにはどのようなコードを書けば良いですか?

  • 解決済

    Python Kivy の起動が遅い

    タイトル通りなのですが、kivyの起動が遅いと感じています。 改善する方法はないものでしょうか? どんなに短いコードであったとしても、平均4秒はかかります。 遅いときは10秒かかる

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

  • Python

    5888questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。