以下是使用本地摄像头调用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键以退出循环。最后,我们释放摄像头并关闭所有窗口

使用本地摄像头调用opcv与paddle inference服务器部署模型的python代码

原文地址: https://www.cveoy.top/t/topic/fg10 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录