使用本地摄像头调用opcv与paddle inference服务器部署模型的python代码
以下是使用本地摄像头调用opencv与paddle inference服务器部署模型的Python代码:
import cv2
import numpy as np
import requests
# 设置请求的URL
url = "http://localhost:8080/predict/image"
# 定义摄像头
cap = cv2.VideoCapture(0)
# 循环读取摄像头的帧
while True:
# 读取摄像头的帧
ret, frame = cap.read()
# 如果读取失败则退出循环
if not ret:
break
# 调用Paddle Inference服务器部署的模型进行预测
# 将图像转换成字节流
_, img_encoded = cv2.imencode('.jpg', frame)
# 发送POST请求
response = requests.post(url, data=img_encoded.tostring(), headers={'Content-Type': 'image/jpeg'})
# 解析预测结果
result = response.json()
# 获取预测结果中的bounding box和类别标签
bboxes = result['data']['boxes']
labels = result['data']['labels']
# 在图像上绘制bounding box和类别标签
for bbox, label in zip(bboxes, labels):
x1, y1, x2, y2 = bbox
cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.putText(frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示图像
cv2.imshow("Frame", frame)
# 按下q键退出循环
if cv2.waitKey(1) == ord('q'):
break
# 释放摄像头并关闭所有窗口
cap.release()
cv2.destroyAllWindows()
在上面的代码中,我们首先定义了一个摄像头对象并开始循环读取帧。在每一帧中,我们将图像转换成字节流并发送POST请求到Paddle Inference服务器部署的模型进行预测。然后,我们从预测结果中获取bounding box和类别标签,并在图像上绘制它们。最后,我们显示图像并检查是否按下了q键以退出循环。最后,我们释放摄像头并关闭所有窗口
原文地址: https://www.cveoy.top/t/topic/fg10 著作权归作者所有。请勿转载和采集!