bosayama commited on
Commit
879f25a
·
verified ·
1 Parent(s): 498b833

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -0
app.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import cv2
3
+ import numpy as np
4
+ from tensorflow.keras.preprocessing import image
5
+ from tensorflow.keras.models import load_model
6
+
7
+ # TensorFlow.jsモデルのURL
8
+ URL = "https://teachablemachine.withgoogle.com/models/ZPfAhDYCh/"
9
+
10
+ # モデルのロード
11
+ model_url = URL + "model.json"
12
+ metadata_url = URL + "metadata.json"
13
+ model = load_model(model_url)
14
+
15
+ # クラスの数を取得
16
+ max_predictions = model.layers[-1].output_shape[1]
17
+
18
+ # カメラの初期化
19
+ def init():
20
+ global cap
21
+ cap = cv2.VideoCapture(0) # カメラのデフォルトデバイスを使用
22
+
23
+ # 画像を予測
24
+ def predict():
25
+ global cap
26
+ ret, frame = cap.read() # カメラからフレームをキャプチャ
27
+ if not ret:
28
+ print("Failed to capture image from camera.")
29
+ return
30
+
31
+ frame = cv2.resize(frame, (200, 200)) # 画像サイズをモデルの入力サイズに変更
32
+ img_array = image.img_to_array(frame)
33
+ img_array = np.expand_dims(img_array, axis=0)
34
+ img_array /= 255.0 # 画像データの正規化
35
+
36
+ # 予測
37
+ prediction = model.predict(img_array)
38
+
39
+ # 結果の表示
40
+ result = {}
41
+ for i in range(max_predictions):
42
+ result[f"Class {i}"] = prediction[0][i]
43
+
44
+ return result
45
+
46
+ # インターフェースの作成
47
+ iface = gr.Interface(fn=predict, live=True, capture_session=True)
48
+ iface.launch()