File size: 1,367 Bytes
ba3f67e d02862c ba3f67e d02862c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import os
import requests
import cv2
import numpy as np
API_URL = os.environ.get(
"ID_LIVENESS_API_URL",
"http://127.0.0.1:8093/api/check_id_liveness"
)
def _load_image(image):
if image is None:
return None
if isinstance(image, str):
img = cv2.imread(image)
if img is None:
return None
return img
return image
def check_liveness(image):
img = _load_image(image)
if img is None:
return {"error": "No image provided"}
success, img_encoded = cv2.imencode('.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 95])
if not success:
return {"error": "Failed to encode image"}
try:
response = requests.post(
API_URL,
files={"image": ("image.jpg", img_encoded.tobytes(), "image/jpeg")},
timeout=30
)
response.raise_for_status()
return response.json()
except requests.exceptions.ConnectionError:
return {"error": "Cannot connect to liveness detection server. Make sure the SDK server is running."}
except requests.exceptions.Timeout:
return {"error": "Request timed out"}
except requests.exceptions.RequestException as e:
return {"error": f"API request failed: {str(e)}"}
except ValueError as e:
return {"error": f"Invalid response from server (not JSON): {str(e)}"}
|