pythonのカメラ機能のサポートについて

アプリ開発に関する質問 pythonのカメラ機能のサポートについて

  • このトピックには2件の返信、2人の参加者があり、最後にakkunにより4年、 5ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #1064
    akkun
    参加者

    pythonのアドオンシナリオを試用してPaPeRo iのシナリオ開発を行っている者です。
    大変参考にさせていただいております。

    さて、チュートリアルの留意事項に、
    「現バージョンのシミュレータ及びAPIでは、カメラによる写真撮影に関する通信を再現する事はできますが、画像を取得する事はできません。」
    とありますが、pythonからカメラ機能で画像取得につきまして、将来サポート予定でしょうか?
    (現在、カメラ機能(papero.send_take_picture等)を使用すると、Returnでエラー(-1)が返ってきてしまいます)
    また、サポートされる場合は、いつ頃となりますでしょうか。

    よろしくお願いいたします。

    • このトピックはakkunが4年、 5ヶ月前に変更しました。
    0
    #1066
    加藤@SPI
    参加者

    現在、pypapero.pyに画像データ取得の機能を盛り込む予定はありません。

    papero.send_take_picture()でtakePictuerコマンドを PaPeRo i に送ると、PaPeRo i の中の/tmpというディレクトに画像ファイルが生成されます。
    PC や Raspberry Pi からこのデータを扱う場合、別途SCP等のファイル転送プロトコルを使用して取り寄せる事になります。

    例としまして、PaPeRo i に1枚写真を撮らせて、その写真(tmp.jpg)をPCのカレントディレクトリにscpで取り寄せるプログラムを
    示しますので、参考にして頂ければと思います。
    (28行目の USER = “****” 及び29行目の PSWD = “****” の”****”の部分には、ルータにログインするためのパスワードを設定して下さい)

    このプログラムの実行には、pypapero.pyの他に、paramiko及びscpが必要です。
    チュートリアルのサンプルプログラムと同様に、例えばtmp.pyというファイル名でpypapero.pypと同じフォルダに保存して、
    Windowsのコマンドプロンプト上で
    python tmp.py -wssvr ws://実機のIPアドレス:8088/papero
    とすると、カレントディレクトリにtmp.jpgという画像データができると思います。

    なお、papero.send_take_picture()のReturnでエラー(-1)が返ってくる事につきましては、現象が確認できませんので、
    よろしければ、通信先が実機かシミュレータか、どのような引数を与えた場合か等について、教えて頂ければと思います。

    
    # -*- coding:utf-8 -*-
    from logging import basicConfig, DEBUG
    basicConfig(level=DEBUG)
    
    import sys
    from enum import Enum
    
    from paramiko import SSHClient,AutoAddPolicy
    from scp import SCPClient
    
    import pypapero
    
    class State(Enum):
        st0 = 10
        st1 = 11
        end = 999
    
    def main(papero, ws_server_addr):
        state = State.st0
        HOST = None
        tmplist = ws_server_addr.split("/")
        if len(tmplist) > 2:
            tmplist2 = tmplist[2].split(":")
            if len(tmplist2) > 0:
                HOST = tmplist2[0]
        print("HOST=" + str(HOST))
        PORT = 22
        USER = "****"
        PSWD = "****"
        scp = None
        if HOST is not None:
            ssh = SSHClient() 
            ssh.set_missing_host_key_policy(AutoAddPolicy())
            ssh.connect(HOST, port=PORT, username=USER, password=PSWD)
            scp = SCPClient(ssh.get_transport())
        while state != State.end:
            messages = papero.papero_robot_message_recv(1)
            if messages is not None:
                msg_dic_rcv = messages[0]
            else:
                msg_dic_rcv = None
            if papero.errOccurred != 0:
                print("------Error occured(main()). Detail : " + papero.errDetail)
                break
            if state == State.st0:
                papero.send_take_picture("JPEG", filename="tmp.jpg", camera="VGA")
                state = State.st1
            elif state == State.st1:
                if msg_dic_rcv is not None:
                    if msg_dic_rcv["Name"] == "takePictureRes":
                        if scp is not None:
                            scp.get("/tmp/tmp.jpg")
                        state = State.end
    
    if __name__ == "__main__":
        simulator_id, robot_name, ws_server_addr = pypapero.get_params_from_commandline(sys.argv)
        papero = pypapero.Papero(simulator_id, robot_name, ws_server_addr)
        if papero.errOccurred == 0:
            main(papero, ws_server_addr)
        papero.papero_cleanup()
    
    • この返信は4年、 5ヶ月前に加藤@SPIが編集しました。
    • この返信は3年、 4ヶ月前に加藤@SPIが編集しました。
    0
    #1068
    akkun
    参加者

    加藤様

    SCPサンプルのご返信、ありがとうございます。
    大変参考になりました。
    こちらのサンプルで要件を満たせそうです。

    > なお、papero.send_take_picture()のReturnでエラー(-1)が返ってくる事につきましては、
    > 現象が確認できませんので、
    > よろしければ、通信先が実機かシミュレータか、
    > どのような引数を与えた場合か等について、教えて頂ければと思います。
    申し訳ございません、こちらのプログラムミスでした。
    (send_take_pictureの引数の記載が間違っておりました)
    上記サンプルコードを実機で動かし、撮影できることを確認できました。
    お騒がせいたしました。

    0
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。