;============================================================ ; iron_camera サンプル: Webcam リアルタイムプレビュー ; ; hspcv4 (内部 OpenCV → MSMF) を使ってカメラ映像を HSP ウィンドウに ; リアルタイム表示するシンプルプレイヤー。 ; ; 機能: ; - カメラ自動検出 (デバイス 0 = 既定のカメラ) ; - リアルタイムプレビュー (~30fps) ; - スナップショット保存 (S キーで snapshot.png 出力) ; - 終了 (ESC キー) ; - FPS 表示 ; ; 操作: ; - S キー: 現在のフレームを snapshot.png に保存 ; - ESC : 終了 ;============================================================ #include "hsp3_net_64.as" #include "hspcv4.as" #include "iron_camera.hsp" title "iron_camera — Webcam リアルタイムプレビュー" ; カメラを開く iron_camera_open 0 if stat = 0 { iron_camera_size cw, ch } else { dialog "カメラ 0 を開けませんでした。\nWebcam が接続されているか確認してください。", 1 end } ; カメラ解像度に合わせてウィンドウ作成 (UI 領域 +60px) if cw <= 0 : cw = 640 if ch <= 0 : ch = 480 screen 0, cw, ch + 60 font "MS Gothic", 14 ; FPS 計測用 tick_prev = gettime(7) + gettime(6) * 1000 frame_count = 0 fps_disp = 0.0 *main_loop ; ESC で終了 stick k_esc, 0 if k_esc & 128 : goto *do_exit ; S キーでスナップショット getkey k_s, 'S' if k_s { iron_camera_save "snapshot.png" snap_msg_until = gettime(7) + gettime(6) * 1000 + 1500 } ; フレーム取得 iron_camera_read if stat ! 0 { await 30 goto *main_loop } ; 画面更新 redraw 0 ; カメラ画像描画 iron_camera_draw 0, 0 ; UI バー (画像下) color 32, 32, 32 : boxf 0, ch, cw, ch + 60 : color 0, 0, 0 color 255, 255, 255 pos 10, ch + 10 mes strf("解像度: %d x %d FPS: %.1f", cw, ch, fps_disp) pos 10, ch + 30 mes "[S] スナップショット保存 [ESC] 終了" color 0, 0, 0 ; スナップショットメッセージ now_ms = gettime(7) + gettime(6) * 1000 if snap_msg_until > now_ms { color 255, 255, 0 pos cw - 200, ch + 10 mes "snapshot.png 保存しました" color 0, 0, 0 } redraw 1 ; FPS 計算 (1 秒ごと) frame_count++ tick_now = gettime(7) + gettime(6) * 1000 if tick_now - tick_prev >= 1000 { fps_disp = double(frame_count) * 1000.0 / double(tick_now - tick_prev) tick_prev = tick_now frame_count = 0 } await 16 goto *main_loop *do_exit iron_camera_close end