🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

1回答

590閲覧

スマホで下記のソースコードを実行する方法 ウェブアプリ

songyong

総合スコア21

Python

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

0グッド

0クリップ

投稿2021/02/16 14:34

みなさまにご協力頂き、無事作りたいものを作ることができました。
これをスマホで使いたいのですが、もっとも簡単にスマホで利用できるようにする方法をご教示頂きたいです。

ウェブサイトにスマホからアクセスさえできれば良いのですが、
何から始めれば良いでしょうか。

PytoやPythonistaも考えたのですが、
コードの書き直しがいずれも必要になるのと、他の人に共有できないため、
何か良い方法はないか探しております。

もっとも簡単でお手頃なウェブアプリ化方法を教えてください。
宜しくお願いします。

Python

1 2#下記のソースコードを最も簡単な方法でウェブアプリ化したいです 3 4import tkinter as tk 5from tkinter import ttk 6import cv2 7import PIL.Image, PIL.ImageTk 8from tkinter import font 9from tkinter import filedialog 10import time 11 12 13class Application(tk.Frame): 14 def __init__(self,master, video_source=0): 15 super().__init__(master) 16 17 self.master.geometry("1250x1000") 18 self.master.title("Tkinter with Video Streaming and Capture") 19 20 # --------------------------------------------------------- 21 # Font 22 # --------------------------------------------------------- 23 self.font_frame = font.Font( family="Meiryo UI", size=15, weight="normal" ) 24 self.font_btn_big = font.Font( family="Meiryo UI", size=20, weight="bold" ) 25 self.font_btn_small = font.Font( family="Meiryo UI", size=15, weight="bold" ) 26 27 self.font_lbl_bigger = font.Font( family="Meiryo UI", size=45, weight="bold" ) 28 self.font_lbl_big = font.Font( family="Meiryo UI", size=30, weight="bold" ) 29 self.font_lbl_middle = font.Font( family="Meiryo UI", size=15, weight="bold" ) 30 self.font_lbl_small = font.Font( family="Meiryo UI", size=12, weight="normal" ) 31 32 # --------------------------------------------------------- 33 # Open the video source 34 # --------------------------------------------------------- 35 36 self.vcap = cv2.VideoCapture( video_source ) 37 self.width = self.vcap.get( cv2.CAP_PROP_FRAME_WIDTH ) 38 self.height = self.vcap.get( cv2.CAP_PROP_FRAME_HEIGHT ) 39 40 # --------------------------------------------------------- 41 # Widget 42 # --------------------------------------------------------- 43 44 self.create_widgets() 45 46 # --------------------------------------------------------- 47 # Canvas Update 48 # --------------------------------------------------------- 49 50 self.delay = 15 #[mili seconds] 51 self.update() 52 53 54 def create_widgets(self): 55 56 #Frame_Camera 57 self.frame_cam = tk.LabelFrame(self.master, text = 'Camera', font=self.font_frame) 58 self.frame_cam.place(x = 10, y = 10) 59 self.frame_cam.configure(width = self.width -90, height = self.height - 50) 60 self.frame_cam.grid_propagate(0) 61 62 #Canvas 63 self.canvas1 = tk.Canvas(self.frame_cam) 64 self.canvas1.configure( width= self.width -90 , height=self.height - 100) 65 self.canvas1.grid(column= 0, row=0,padx = 10, pady=10) 66 67 # Frame_Button 68 self.frame_btn = tk.LabelFrame( self.master, text='Control', font=self.font_frame ) 69 self.frame_btn.place( x=10, y=680 ) 70 self.frame_btn.configure( width=self.width - 90, height=120 ) 71 self.frame_btn.grid_propagate( 0 ) 72 73 #Snapshot Button 74 self.btn_snapshot = tk.Button( self.frame_btn, text='Snapshot', font=self.font_btn_big) 75 self.btn_snapshot.configure(width = 15, height = 1, command=self.press_snapshot_button) 76 self.btn_snapshot.grid(column=0, row=0, padx=30, pady= 10) 77 78 # Close Button 79 self.btn_close = tk.Button( self.frame_btn, text='Close', font=self.font_btn_big ) 80 self.btn_close.configure( width=15, height=1, command=self.press_close_button ) 81 self.btn_close.grid( column=1, row=0, padx=20, pady=10 ) 82 83 # テキストボックスの作成 84 self.textBox1 = tk.Entry(width=150) # 入力用テキストボックス 85 self.textBox1.place(x=37, y=750) # テキストボックス位置指定 86 87 def update(self): 88 #Get a frame from the video source 89 _, frame = self.vcap.read() 90 91 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 92 self.photo = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(frame)) 93 94 #self.photo -> Canvas 95 self.canvas1.create_image(0,0, image= self.photo, anchor = tk.NW) 96 97 self.master.after(self.delay, self.update) 98 99 def analyze_img(self, pic_name): 100 101 img_test = cv2.imread(pic_name, cv2.IMREAD_GRAYSCALE) 102 result = '実装中' 103 return result 104 105 106 def press_snapshot_button(self): 107 # Get a frame from the video source 108 _, frame = self.vcap.read() 109 frame1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 110 pic_name = "frame-" + time.strftime( "%Y-%d-%m-%H-%M-%S")+ ".jpg" 111 cv2.imwrite(pic_name, cv2.cvtColor( frame1, cv2.COLOR_BGR2RGB ) ) 112 113 result = self.analyze_img(pic_name) 114 self.textBox1.delete(0,tk.END) 115 self.textBox1.insert(1, result) 116 117 def press_close_button(self): 118 self.master.destroy() 119 self.vcap.release() 120 121def main(): 122 root = tk.Tk() 123 app = Application(master=root)#Inherit 124 app.mainloop() 125 126if __name__ == "__main__": 127 main()

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutakuya

2021/02/16 14:55

お手頃な方法は無いと思います。 Webアプリ化するなら、Django、FlaskなどのWebフレームワークを使う、 スマホアプリにするなら、アプリはSwift、Kotlin、Flutterなどで作って、どうしてもPythonで処理させたいことがあれば、サーバーを立てて、アプリとは別で処理させるのが良いと思います。
songyong

2021/02/17 01:22

takutakuya 様 お世話になっております。 質問の意図を汲み取り、的確な助言を頂き、ありがとうございます。 フレームワーク、サーバーあたりが全く初心者で途方に暮れておりましたので、とても助かりました。 教えて頂いた情報を元に、どう実装すべきかから検討するようにします。 ありがとうございました!
guest

回答1

0

自己解決

お手頃な方法はないとのことで、
実装方法から検討し直すようにします。

投稿2021/02/17 01:23

songyong

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問