簡體   English   中英

如何使用 opencv 將視頻幀發送到 POST 圖像 url?

[英]How can I send a video frames in to POST image url with opencv?

我試圖將單個幀發送到接收單個圖像的 POST 推斷 model。 這就是我想要做的:讀取單個幀轉換為 base64 並發送但不工作

 import requests import base64 import io from PIL import Image import cv2 cap = cv2.VideoCapture(0) if not cap.isOpened(): print("Cannot open camera") exit() while True: ret, frame = cap.read() cv2.imshow('input', frame) cv2.imwrite("frame.jpg", frame) retval, buffer = cv2.imencode('.jpg', frame) jpg_as_text = base64.b64encode(buffer) upload_url = "".join([ "https://infer.roboflow.com/jb927-bottle-r6a6e--2", "?access_token=AHNg55YroDzs", "&name=frame.jpg" ]) # POST to the API r = requests.post(upload_url, data=jpg_as_text, headers={ "Content-Type": "application/x-www-form-urlencoded" }) # Output result print(r.json()) if cv.waitKey(1) == ord('q'): break cap.release() cv.destroyAllWindows()

看起來 base64 編碼與 CV2 正確發生。 錯誤來自發布請求格式。 這是一個工作示例:

parts = []
url_base = 'https://infer.roboflow.com/'
endpoint = '[YOUR ENDPOINT]'
access_token = '?access_token=[YOUR KEY]'
format = '&format=json'
confidence = '&confidence=50'
parts.append(url_base)
parts.append(endpoint)
parts.append(access_token)
parts.append(format)
parts.append(confidence)
url = ''.join(parts)

print(url)

frame = cv2.imread('example_frame.jpg')

retval, buffer = cv2.imencode('.jpg', frame)
jpg_as_text = base64.b64encode(buffer)

headers = {'accept': 'application/json'}
r = requests.post(url, data=jpg_as_text, headers=headers)

print(r.json())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM