机械臂识别二维码

This commit is contained in:
ywb
2026-05-21 20:42:29 +08:00
parent 457f32919c
commit 466272cc22
+4 -16
View File
@@ -1379,18 +1379,11 @@ def api_qr_config_scan(qr_id):
try: try:
import cv2 import cv2
import numpy as np import numpy as np
# 从机械臂摄像头拉取一帧 JPEG # 从机械臂摄像头 snapshot 端点拉取一帧 JPEG
r = requests.get(ARM_CAMERA_CONFIG["url"], stream=True, timeout=5) r = requests.get(ARM_CAMERA_CONFIG.get("snapshot_url", ARM_CAMERA_CONFIG["url"]), timeout=8)
if r.status_code != 200: if r.status_code != 200 or not r.content:
return jsonify({"ok": False, "error": "无法连接机械臂摄像头"}), 400 return jsonify({"ok": False, "error": "无法连接机械臂摄像头"}), 400
data = b"" jpg_bytes = r.content
for chunk in r.iter_content(chunk_size=4096):
data += chunk
s = data.find(b"\xff\xd8")
e = data.find(b"\xff\xd9", s + 2) if s >= 0 else -1
if s >= 0 and e > s:
r.close()
jpg_bytes = data[s:e+2]
# 解码为 numpy 数组并检测二维码 # 解码为 numpy 数组并检测二维码
nparr = np.frombuffer(jpg_bytes, np.uint8) nparr = np.frombuffer(jpg_bytes, np.uint8)
frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR) frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
@@ -1424,11 +1417,6 @@ def api_qr_config_scan(qr_id):
return jsonify({"ok": False, "error": f"二维码 {qr_id} 不存在"}), 404 return jsonify({"ok": False, "error": f"二维码 {qr_id} 不存在"}), 404
else: else:
return jsonify({"ok": False, "error": "未检测到二维码"}) return jsonify({"ok": False, "error": "未检测到二维码"})
if len(data) > 1024 * 1024:
r.close()
return jsonify({"ok": False, "error": "摄像头数据流异常"}), 400
r.close()
return jsonify({"ok": False, "error": "未收到完整图像帧"}), 400
except Exception as ex: except Exception as ex:
logger.error(f"QR 扫描机械臂摄像头失败: {ex}") logger.error(f"QR 扫描机械臂摄像头失败: {ex}")
return jsonify({"ok": False, "error": f"扫描失败: {str(ex)}"}), 400 return jsonify({"ok": False, "error": f"扫描失败: {str(ex)}"}), 400