fengyanglei vor 1 Monat
Ursprung
Commit
98fdb5172f
4 geänderte Dateien mit 95 neuen und 7 gelöschten Zeilen
  1. 2 2
      README.md
  2. 1 1
      api_config.py
  3. 7 4
      depth_common.py
  4. 85 0
      run.sh

+ 2 - 2
README.md

@@ -103,8 +103,8 @@ python examples/save_image_to_disk.py
 - `REQUEST_LOG_BACKUP_COUNT`:日志轮转保留份数(默认 `10`)。
 - `API_HOST`:服务监听地址(默认 `127.0.0.1`)。
 - `API_PORT`:服务端口(默认 `8080`)。
-- `MIN_DEPTH`:有效最小深度(mm,默认 `500`)。
-- `MAX_DEPTH`:有效最大深度(mm,默认 `4000`)。
+- `MIN_DEPTH`:有效最小深度(cm,默认 `50`)。
+- `MAX_DEPTH`:有效最大深度(cm,默认 `400`)。
 - `ROI_WIDTH_CM`:ROI 宽度(cm,默认 `10`)。
 - `ROI_HEIGHT_CM`:ROI 高度(cm,默认 `12`)。
 

+ 1 - 1
api_config.py

@@ -45,7 +45,7 @@ class ApiConfig:
             request_log_max_len=int(os.getenv("REQUEST_LOG_MAX_LEN", "1000")),
             request_log_max_bytes=int(os.getenv("REQUEST_LOG_MAX_BYTES", str(20 * 1024 * 1024))),
             request_log_backup_count=int(os.getenv("REQUEST_LOG_BACKUP_COUNT", "10")),
-            api_host=os.getenv("API_HOST", "127.0.0.1"),
+            api_host=os.getenv("API_HOST", "0.0.0.0"),
             api_port=int(os.getenv("API_PORT", "8080")),
             settings=Settings.from_env(),
         )

+ 7 - 4
depth_common.py

@@ -31,7 +31,8 @@ def _get_env_int(name, default):
 class Settings:
     """深度处理参数集合。"""
 
-    # 有效深度区间(毫米);超出范围的像素会被置为 0。
+    # 有效深度区间(内部单位:毫米);超出范围的像素会被置为 0。
+    # 环境变量 MIN_DEPTH/MAX_DEPTH 的输入单位为厘米。
     min_depth: int
     max_depth: int
 
@@ -55,11 +56,13 @@ class Settings:
         nearest_percentile=5,
     ):
         """从环境变量创建参数对象。"""
+        min_depth_cm = _get_env_int("MIN_DEPTH", 50)
+        max_depth_cm = _get_env_int("MAX_DEPTH", 400)
         return cls(
-            min_depth=_get_env_int("MIN_DEPTH", 500),
-            max_depth=_get_env_int("MAX_DEPTH", 4000),
+            min_depth=min_depth_cm * 10,
+            max_depth=max_depth_cm * 10,
             roi_width_cm=_get_env_int("ROI_WIDTH_CM", 10),
-            roi_height_cm=_get_env_int("ROI_HEIGHT_CM", 12),
+            roi_height_cm=_get_env_int("ROI_HEIGHT_CM", 10),
             median_blur_ksize=median_blur_ksize,
             morph_open_ksize=morph_open_ksize,
             nearest_percentile=nearest_percentile,

+ 85 - 0
run.sh

@@ -0,0 +1,85 @@
+#!/bin/bash
+
+APP_NAME=baoshi-measure-cargo
+APP_PATH=/bssoft/baoshi-measure-cargo
+cd $APP_PATH
+
+#使用说明,用来提示输入参数
+usage() {
+    echo "Usage: sh demo.sh [start|stop|restart|status]"
+    exit 1
+}
+
+#检查程序是否在运行
+is_exist() {
+    pid=$(ps -ef | grep "$APP_NAME" | grep -v grep | grep -vF "$0" | awk '{print $2}')
+    #如果不存在返回1,存在返回0
+    if [ -z "${pid}" ]; then
+      return 1
+    else
+      return 0
+    fi
+}
+
+#启动方法
+start() {
+   is_exist
+   if [ $? -eq "0" ]; then
+     echo "${APP_NAME} is already running. pid=${pid} ."
+   else
+     export API_PORT=8080
+     export ROI_WIDTH_CM=10 # cm
+     export ROI_HEIGHT_CM=10 # cm
+     export MIN_DEPTH=50 # cm
+     export MAX_DEPTH=400 # cm
+
+     source env/bin/activate
+     nohup python $APP_PATH/main.py > output.log 2>&1 &
+   fi
+}
+
+#停止方法
+stop() {
+   is_exist
+   if [ $? -eq "0" ]; then
+     kill -9 $pid
+   else
+     echo "${APP_NAME} is not running"
+   fi
+}
+
+#输出运行状态
+status() {
+   is_exist
+   if [ $? -eq "0" ]; then
+     echo "${APP_NAME} is running. Pid is ${pid}"
+   else
+     echo "${APP_NAME} is not running."
+   fi
+}
+
+#重启
+restart() {
+   stop
+   start
+}
+
+#根据输入参数,选择执行对应方法,不输入则执行使用说明
+case "$1" in
+   "start")
+     start
+     ;;
+   "stop")
+     stop
+     ;;
+   "status")
+     status
+     ;;
+   "restart")
+     restart
+     ;;
+   *)
+     usage
+     ;;
+esac
+