-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsample.py
More file actions
executable file
·74 lines (57 loc) · 2.35 KB
/
sample.py
File metadata and controls
executable file
·74 lines (57 loc) · 2.35 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
"""Example of using API4AI general objects detection."""
import asyncio
import sys
import aiohttp
# Use 'demo' mode just to try api4ai for free. ⚠️ Free demo is rate limited and must not be used in real projects.
#
# Use 'normal' mode if you have an API Key from the API4AI Developer Portal. This is the method that users should normally prefer.
#
# Use 'rapidapi' if you want to try api4ai via RapidAPI marketplace.
# For more details visit:
# https://rapidapi.com/api4ai-api4ai-default/api/general-detection/details
MODE = 'demo'
# Your API4AI key. Fill this variable with the proper value if you have one.
API4AI_KEY = ''
# Your RapidAPI key. Fill this variable with the proper value if you want
# to try api4ai via RapidAPI marketplace.
RAPIDAPI_KEY = ''
OPTIONS = {
'demo': {
'url': 'https://demo.api4ai.cloud/general-det/v1/results'
},
'normal': {
'url': 'https://api4ai.cloud/general-det/v1/results',
'headers': {'X-API-KEY': API4AI_KEY}
},
'rapidapi': {
'url': 'https://general-detection.p.rapidapi.com/v1/results',
'headers': {'X-RapidAPI-Key': RAPIDAPI_KEY}
}
}
async def main():
"""Entry point."""
image = sys.argv[1] if len(sys.argv) > 1 else 'https://static.api4.ai/samples/general-det-1.jpg'
async with aiohttp.ClientSession() as session:
if '://' in image:
# Data from image URL.
data = {'url': image}
else:
# Data from local image file.
data = {'image': open(image, 'rb')}
# Make request.
async with session.post(OPTIONS[MODE]['url'],
data=data,
headers=OPTIONS[MODE].get('headers')) as response:
resp_json = await response.json()
resp_text = await response.text()
# Print raw response.
print(f'💬 Raw response:\n{resp_text}\n')
# Parse response and objects with confidence > 0.5.
confident = [x['entities'][0]['classes']
for x in resp_json['results'][0]['entities'][0]['objects']
if list(x['entities'][0]['classes'].values())[0] > 0.5]
print(f'💬 {len(confident)} objects found with confidence above 0.5:\n{confident}\n')
if __name__ == '__main__':
# Run async function in asyncio loop.
asyncio.run(main())