カメラによる駐車スペース検知:選定・導入・実測データ
区画がカメラ映像に映っている必要があります。隣の車両で完全に隠れる区画や、遠くて小さく映る区画は正しく判定できません。
このソリューションでできること
区画ごとに地磁気センサーや超音波センサーを付けず、場内の既存 IP カメラをそのまま使います。1 台のカメラに映る区画はすべて同時に判定します。ブラウザーで区画ごとに枠を描いて名前を付けると、エッジホストが枠内に車があるかを判定し続け、区画ごとの「使用中 / 空き / 不明」をシステムへ送ります。空き表示板、駐車誘導、専用区画の管理に使えます。
- デプロイパッケージ(Docker Compose と設定):github.com/suharvest/sensecraft-solutions
- 選定と導入:リファレンス設計ページ
映像は現場に
映像は現場のエッジホストで解析し、外に出るのは区画の状態だけです。
1 台で複数系統
reComputer J30 シリーズで 6 系統を 620 秒同時に処理し、フレーム欠落なし(「性能と実測データ」参照)。
区画は自分で描く
ライブ映像の上で枠を描いて名前を付け、保存するとすぐ反映。再起動後も保持されます。
切断がわかる
カメラの映像が途切れて約 10 秒後、その区画は「不明」になり、古い状態を送り続けません。
実機の画面
エッジホスト内蔵の区画エディターです。映像上の枠が区画で、赤が使用中、緑が空き、右側に合計と区画一覧を表示します。

スクリーンショットでは P01、P02、P04、P06 が使用中、P03 と P05 が空きです。入力は平面駐車場の静止画をループ再生したもので、現場映像ではありません。
必要なハードウェア
現場に必要なのは、場内の IP カメラ、エッジホスト 1 台、MQTT ブローカー(既存の Mosquitto など)です。
① IP カメラ:既存のカメラで、H.264 の RTSP 出力があれば十分です。サブストリームで構いません。
② エッジホスト:4 機種から 1 台。1 台で複数のカメラを扱い、各カメラを毎秒 1 フレーム解析します。
| エッジホスト | 実測 | 選ぶ場面 | |
|---|---|---|---|
![]() | reComputer J30 シリーズ(J3011) Jetson Orin Nano、JetPack 6.2 | 6 系統でフレーム欠落なし、1 フレーム p50 6.5 ms | 1 台で複数系統、標準の選択 |
![]() | reComputer J40 シリーズ(J4012) Jetson Orin NX、JetPack 6.2 | J30 と同じパッケージ | 同じホストで他のモデルも動かす |
![]() | reComputer RK3588 シリーズ オンボード NPU | 1 系統、1 フレーム p50 36.6 ms | 現場を Rockchip で統一する |
![]() | reComputer RK3576 シリーズ オンボード NPU | 1 系統、毎秒 1 フレーム、欠落なし | カメラが少なく、コスト優先 |
RK ホストで系統を増やすときは 1 系統ずつ追加し、それぞれ状態が更新されていることを確認してください。
エッジホスト、カメラ、MQTT ブローカーは同じ LAN に置き、ホストからカメラの RTSP アドレス(通常 554 番ポート)にアクセスできること。導入時はランタイムとモデルのダウンロードにネット接続が必要で、その後はオフラインで動作します。
現場への導入
1. カメラの画角を確認
各区画がはっきり映り、隣の車両で完全に隠れないこと。1 つの枠で囲むのは 1 区画だけです。車両が枠の面積の約 3 分の 1 を占めると使用中と判定し、複数区画を囲む大きな枠は使用中になりません。
2. ソフトウェアの導入:3 ステップ
機器ごとの手順はリファレンス設計ページにあります。ここでは流れだけを示します。
- エッジホストのデプロイ:各カメラの RTSP アドレスと MQTT ブローカーを入力してデプロイします。
- 区画を描く:8080 番ポートの区画エディターを開いてカメラを選び、空いている場所で矩形をドラッグし、角を区画に合わせ、区画 ID(例:B1-023)を入力して保存します。
- 確認:区画の状態が変わるとエディターの色が変わり、そのカメラの状態メッセージが MQTT に届きます。
インターフェース
区画の状態は MQTT でブローカーへ送られ、カメラごとに 1 トピックです。
- 空き表示板・駐車誘導:各カメラのトピックを購読し、メッセージ内の使用中・空き・不明の数を合計します。
- 専用区画の管理:充電スタンドや来客用の区画を個別の枠にし、区画 ID で判断します。
- Home Assistant や自社システム:同じトピックを区画 ID で読み取ります。
| トピック / ポート | 内容 |
|---|---|
MQTT <site>/parking/<camera>/slots | このカメラの各区画の状態(occupied / free / unknown)と 3 種類の数。いずれかの区画が変わると送信 |
HTTP 8080 /slots/editor | 区画エディター:枠を描く、名前を付ける、リアルタイムの状態を見る |
HTTP 8099 /healthz | サービスの状態 |
状態はフレームごとに揺れないよう保持されます。車両が停止して約 3 秒後に使用中、離れて約 5 秒後に空き、映像が途切れて約 10 秒後に不明になります。
性能と実測データ
複数系統と 1 系統
| 機器 | 入力 | 結果 |
|---|---|---|
| reComputer J30 シリーズ(Orin Nano) | 6 系統、各毎秒 1 フレーム、620 秒 | 全系統でフレーム欠落 0、各約 1.0 fps(実測) |
| reComputer J30 シリーズ(Orin Nano) | 1 系統 | 0.988 fps、1 フレーム p50 6.5 ms、区画ごとに 15 回の状態変化を送信(実測) |
| reComputer RK3588 シリーズ | 1 系統 | 1 フレーム p50 36.6 ms、17 回の状態変化を送信(実測) |
| reComputer RK3576 シリーズ | 1 系統 | 1.0 fps、区画状態メッセージ 21 件を受信、フレーム欠落 0(実測) |
1 系統の入力は、平面駐車場の静止画と暗いフレームを交互に流し、使用中と空きの切り替えを発生させたものです。
再現:sensecraft-solutions/solutions/edge_parking_occupancy(デプロイパッケージ)と入力映像 slots-occ20-empty20-400s.mp4
カメラ映像の途切れ
| 機器 | 結果 |
|---|---|
| reComputer RK3576 シリーズ | 配信停止から 9.98 秒後、最後のフレームから約 11 秒後に区画が unknown に(実測) |
モデルとランタイム
| 機器 | 車両検出 | ランタイム |
|---|---|---|
| reComputer J30 / J40 シリーズ | YOLOX、640×640、FP16 | TensorRT |
| reComputer RK3588 / RK3576 シリーズ | YOLOX、640×640、INT8(w8a8) | RKNN、MPP ハードウェアデコード |
判定に影響するパラメーター(デプロイパッケージの config/slots*.json):
slot_coverage.occupied_ratio/free_ratio:車両が枠面積の 0.3 以上で使用中、0.2 未満で空き。slot_coverage.hold_s/free_hold_s:状態が 3 秒 / 5 秒続いてから切り替え。unknown_after_s:映像が 10 秒途切れると不明。
既知の制限
- 広角レンズの歪みと隣接遮蔽:広角カメラの画角周辺部ではパース歪みが生じ、手前の大型車(SUV やバンなど)が隣接する後方の区画を遮る場合があります。1 台のカメラでカバーする区画数は 30 区画以内を推奨します。
- 白線跨ぎと境界比率:車両が区画線を跨いで駐車し、両側の被覆率が 0.2〜0.3 の遷移範囲に入る場合、一時的に状態が小刻みに変化することがあります。
hold_sを長めに設定することで抑制できます。 - 水たまりの反射と動的な影:雨後の路面の照り返しや柱・樹木の濃い影により、エッジ検出の信頼度が影響を受けることがあります。夜間は一定の環境照明(路面照度 ≥ 30 Lux)を確保してください。
データと素材の出典
- スクリーンショットと 1 系統の結果は平面駐車場の静止画によるもので、画像の元の出典は確認中です。
- 検出モデルのコード YOLOX:Apache-2.0。



