Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • PaddleHub
  • Issue
  • #792

P
PaddleHub
  • 项目概览

PaddlePaddle / PaddleHub
大约 2 年 前同步成功

通知 285
Star 12117
Fork 2091
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
PaddleHub
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 200
    • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
    • 合并请求 4
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 8月 01, 2020 by saxon_zh@saxon_zhGuest

部署到服务端的摄像头实时口罩预测报错

Created by: 13433583369

欢迎您反馈PaddleHub使用问题,非常感谢您对PaddleHub的贡献! 在留下您的问题时,辛苦您同步提供如下信息:

  • 版本、环境信息 1)PaddleHub和PaddlePaddle版本:请提供您的PaddleHub和PaddlePaddle版本号, PaddleHub1.7.1,PaddlePaddle1.8.3 2)系统环境:请您描述系统类型, Windows,python版本
  • 复现信息:如为报错,请给出复现环境、复现步骤

目的:利用一键部署的功能,对摄像头截取的帧直接用post请求r = requests.post(url=url, headers=headers,data=json.dumps(datas))进行预测返回预测结果 具体代码如下(接下来的代码只是对关闭摄像头窗口时候的最后一帧进行预测,不是实时的,只是为了测试能不能对帧预测) capture = cv2.VideoCapture(1,cv2.CAP_DSHOW) # 打开摄像头对帧进行读取 #cv2.CAP_DSHOW参数防止关闭摄像头窗口时出现warning。只不过1才是是默认摄像头 while(1): ret, frame = capture.read() # frame即视频的一帧数据 if ret == False: break cv2.imshow('Mask Detection', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break capture.release() cv2.destroyAllWindows() #接下来对帧进行预测 headers = {"Content-type": "applicaion/json"} datas={'images':[cv2_to_base64(frame)]} url = "http://127.0.0.1:8866/predict/pyramidbox_lite_server_mask" r = requests.post(url=url, headers=headers,data=json.dumps(datas)) results=r.json()["results"] #["results"]只是对字典的索引,把检测结果索引出来!!! print(results) print(json.dumps(r.json(),indent=4,ensure_ascii=False))

报错
打印出的results为空 print(json.dumps(r.json(),indent=4,ensure_ascii=False))打印结果如下 { "msg": "This usage is out of date, please use 'application/json' as content-type to post to /predict/pyramidbox_lite_server_mask. See 'https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md' for more details.", "results": "", "status": "-1" }

而当我把视频帧保存为jpg图片,在对这个图片用和上面同样的方法预测时候一切都是正常的,代码基本不变,下面贴上代码) capture = cv2.VideoCapture(1,cv2.CAP_DSHOW) # 打开摄像头对帧进行读取 #cv2.CAP_DSHOW参数防止关闭摄像头窗口时出现warning。只不过1才是是默认摄像头 while(1): ret, frame = capture.read() # frame即视频的一帧数据 if ret == False: break cv2.imshow('Mask Detection', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break capture.release() cv2.destroyAllWindows() cv2.imwrite("people.png",frame) #保存帧图片 imgs = cv2.imread(test_img_path[1]) datas = {'images':[cv2_to_base64(imgs)]} headers = {"Content-type": "application/json"} url = "http://127.0.0.1:8866/predict/pyramidbox_lite_server_mask" r = requests.post(url=url, headers=headers, data=json.dumps(datas)) results=r.json()["results"] #["results"]只是对字典的索引,把检测结果索引出来!!! print(results) print(json.dumps(r.json(),indent=4,ensure_ascii=False))

打印结果(正常的结果) [{'data': [{'bottom': 450, 'confidence': 0.9915214776992798, 'label': 'NO MASK', 'left': 264, 'right': 424, 'top': 244}], 'path': 'ndarray_time=1596258579876741.0'}]

{ "msg": "", "results": [ { "data": [ { "bottom": 438, "confidence": 0.9628458023071289, "label": "NO MASK", "left": 255, "right": 418, "top": 240 } ], "path": "ndarray_time=1596258558673255.0" } ], "status": "0" }

为何同样是视频帧,为何对帧直接进行预测就会出错,而保存帧为图片时再预测就不会出错。那我如果需要利用部署服务器实时口罩检测的话,我还需要把每一帧都保存下来么。求大佬指点一下谢啦!

好像解答区也有实时监测的demo,可是那个是本地预测的,不是利用部署到服务器端进行预测的。 我是想最后放到树莓派来进行口罩预测(上述还是在windows下运行的),或许大佬还有其他方法吗,不用部署服务器的方式也能在树莓派上预测~ 麻烦提供下思路谢谢~

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/PaddleHub#792
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7