如何将Base64格式图片传入Roboflow Infer API端点?请求返回400错误码的解决咨询
我明白你现在碰到的问题——按照文档用POST请求传Base64图片到Roboflow API,结果返回400错误,确实挺闹心的。我来帮你梳理几个常见的排查方向和解决办法:
先检查Base64字符串的格式是否正确
很多时候400错误是因为Base64带了多余的前缀,比如data:image/jpeg;base64,这类标识。Roboflow的API一般只需要纯Base64编码部分,你可以把这个前缀去掉再试试。比如原字符串是data:image/png;base64,iVBORw0KGgo...,就改成iVBORw0KGgo...。确认请求的数据结构和参数名是否正确
你提到params是API key,要确保参数名是api_key(这是Roboflow API要求的固定参数名)。另外,直接把Base64字符串作为data参数传入可能会导致服务器解析失败,正确的做法是把Base64放到image字段里,用JSON格式发送请求:import requests roboflow_url = "你的完整API端点URL" params = {"api_key": "你的API密钥"} payload = {"image": base64_image} # 将Base64包装在image字段中 response = requests.post(roboflow_url, params=params, json=payload)验证API端点URL是否正确
要确保你的roboflow_url是完整的合法地址,格式应该类似https://detect.roboflow.com/你的模型名称/版本号,别漏掉版本号或者拼写错模型名称。检查Base64编码是否有效
你可以把Base64字符串解码回图片,确认编码过程没有出错。用这段代码试试:import base64 with open("test_image.jpg", "wb") as f: f.write(base64.b64decode(base64_image))如果解码后的图片打不开,说明你在编码图片时出了问题,需要重新生成正确的Base64字符串。
查看错误响应的详细信息
400错误通常会附带具体的错误提示,你可以打印响应内容来定位问题:print(response.json()) # 或者print(response.text)比如可能会提示“invalid image format”“missing api key”之类的明确信息,跟着提示调整就好。
备注:内容来源于stack exchange,提问作者george bibu

