未验证 提交 fdf4d0e3 编写于 作者: Z zhiboniu 提交者: GitHub

check rtsp stream (#6595)

* check rtsp stream

* add rtsp in doc s

* visual change to false

* update rtsp command
上级 09e7665d
...@@ -129,6 +129,12 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph ...@@ -129,6 +129,12 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16] python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16]
``` ```
对rtsp流的支持,video_file后面的视频地址更换为rtsp流地址,示例如下:
```
# 行人属性识别,指定配置文件路径和测试视频,在配置文件```deploy/pipeline/config/infer_cfg_pphuman.yml```中的ATTR部分enable设置为```True```
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o visual=False --video_file=rtsp://[YOUR_RTSP_SITE] --device=gpu [--run_mode trt_fp16]
```
### 参数说明 ### 参数说明
| 参数 | 是否必须|含义 | | 参数 | 是否必须|含义 |
...@@ -137,7 +143,7 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph ...@@ -137,7 +143,7 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pph
| --model_dir | Option | PP-Human中各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| | --model_dir | Option | PP-Human中各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`|
| --image_file | Option | 需要预测的图片 | | --image_file | Option | 需要预测的图片 |
| --image_dir | Option | 要预测的图片文件夹路径 | | --image_dir | Option | 要预测的图片文件夹路径 |
| --video_file | Option | 需要预测的视频 | | --video_file | Option | 需要预测的视频,或者rtsp流地址 |
| --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4| | --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4|
| --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`| | --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`|
| --output_dir | Option|可视化结果保存的根目录,默认为output/| | --output_dir | Option|可视化结果保存的根目录,默认为output/|
......
...@@ -84,6 +84,12 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppv ...@@ -84,6 +84,12 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppv
``` ```
对rtsp流的支持,video_file后面的视频地址更换为rtsp流地址,示例如下:
```
# 车辆属性识别,指定配置文件路径和测试视频,在配置文件```deploy/pipeline/config/infer_cfg_ppvehicle.yml```中的ATTR部分enable设置为```True```
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml -o visual=False --video_file=rtsp://[YOUR_RTSP_SITE] --device=gpu [--run_mode trt_fp16]
```
### 参数说明 ### 参数说明
| 参数 | 是否必须|含义 | | 参数 | 是否必须|含义 |
...@@ -92,7 +98,7 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppv ...@@ -92,7 +98,7 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppv
| --model_dir | Option | 各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| | --model_dir | Option | 各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`|
| --image_file | Option | 需要预测的图片 | | --image_file | Option | 需要预测的图片 |
| --image_dir | Option | 要预测的图片文件夹路径 | | --image_dir | Option | 要预测的图片文件夹路径 |
| --video_file | Option | 需要预测的视频 | | --video_file | Option | 需要预测的视频,或者rtsp流地址 |
| --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4| | --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4|
| --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`| | --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`|
| --output_dir | Option|可视化结果保存的根目录,默认为output/| | --output_dir | Option|可视化结果保存的根目录,默认为output/|
......
...@@ -130,7 +130,9 @@ class Pipeline(object): ...@@ -130,7 +130,9 @@ class Pipeline(object):
self.multi_camera = False self.multi_camera = False
elif video_file is not None: elif video_file is not None:
assert os.path.exists(video_file), "video_file not exists." assert os.path.exists(
video_file
) or 'rtsp' in video_file, "video_file not exists and not an rtsp site."
self.multi_camera = False self.multi_camera = False
input = video_file input = video_file
self.is_video = True self.is_video = True
...@@ -659,6 +661,8 @@ class PipePredictor(object): ...@@ -659,6 +661,8 @@ class PipePredictor(object):
# mot -> pose -> action # mot -> pose -> action
capture = cv2.VideoCapture(video_file) capture = cv2.VideoCapture(video_file)
video_out_name = 'output.mp4' if self.file_name is None else self.file_name video_out_name = 'output.mp4' if self.file_name is None else self.file_name
if "rtsp" in video_file:
video_out_name = video_out_name + "_rtsp.mp4"
# Get Video info : resolution, fps, frame count # Get Video info : resolution, fps, frame count
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)) width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
...@@ -767,8 +771,10 @@ class PipePredictor(object): ...@@ -767,8 +771,10 @@ class PipePredictor(object):
if self.with_vehicleplate: if self.with_vehicleplate:
if frame_id > self.warmup_frame: if frame_id > self.warmup_frame:
self.pipe_timer.module_time['vehicleplate'].start() self.pipe_timer.module_time['vehicleplate'].start()
plate_input, _, _ = crop_image_with_mot(
frame_rgb, mot_res, expand=False)
platelicense = self.vehicleplate_detector.get_platelicense( platelicense = self.vehicleplate_detector.get_platelicense(
crop_input) plate_input)
if frame_id > self.warmup_frame: if frame_id > self.warmup_frame:
self.pipe_timer.module_time['vehicleplate'].end() self.pipe_timer.module_time['vehicleplate'].end()
self.pipeline_res.update(platelicense, 'vehicleplate') self.pipeline_res.update(platelicense, 'vehicleplate')
......
...@@ -268,7 +268,7 @@ class PlateRecognizer(object): ...@@ -268,7 +268,7 @@ class PlateRecognizer(object):
platelicense = "" platelicense = ""
for text_info in text_pcar: for text_info in text_pcar:
text = text_info[0][0][0] text = text_info[0][0][0]
if len(text) > 2 and text[0] in simcode and len(text) < 10: if len(text) > 2 and len(text) < 10:
platelicense = text platelicense = text
plate_all["plate"].append(platelicense) plate_all["plate"].append(platelicense)
return plate_all return plate_all
......
...@@ -418,7 +418,7 @@ def visualize_vehicleplate(im, results, boxes=None): ...@@ -418,7 +418,7 @@ def visualize_vehicleplate(im, results, boxes=None):
im = np.ascontiguousarray(np.copy(im)) im = np.ascontiguousarray(np.copy(im))
im_h, im_w = im.shape[:2] im_h, im_w = im.shape[:2]
text_scale = max(0.5, im.shape[0] / 3000.) text_scale = max(1.0, im.shape[0] / 1600.)
text_thickness = 1 text_thickness = 1
line_inter = im.shape[0] / 40. line_inter = im.shape[0] / 40.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册