Change roboflow package to REST API, update requirements
This commit is contained in:
parent
024057d2cc
commit
8715bffbe4
@ -1,14 +1,46 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from roboflow import Roboflow
|
from PIL import Image, ImageDraw
|
||||||
import os
|
import os
|
||||||
|
import requests
|
||||||
|
import base64
|
||||||
|
|
||||||
rf = Roboflow(api_key=os.environ["API_KEY_ROBO"])
|
url = "https://detect.roboflow.com/plankton-vhsho/1"
|
||||||
model = rf.workspace().project("plankton-vhsho").version(1).model
|
api_key = os.environ["API_KEY_ROBO"]
|
||||||
|
|
||||||
|
|
||||||
def predict_image(image):
|
def predict_image(image):
|
||||||
results = model.predict(image.image.path)
|
with open(image.image.path, "rb") as f:
|
||||||
results.save(
|
enc_image = base64.b64encode(f.read())
|
||||||
f"{settings.MEDIA_ROOT}/{image.image.name.split('.')[0]}_predicted.{image.image.name.split('.')[-1]}"
|
results = requests.post(
|
||||||
|
url=url,
|
||||||
|
params={"api_key": api_key},
|
||||||
|
data=enc_image,
|
||||||
|
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for box in results.json()["predictions"]:
|
||||||
|
save_image(box, image)
|
||||||
|
|
||||||
return results.json()
|
return results.json()
|
||||||
|
|
||||||
|
|
||||||
|
def save_image(box, source_img):
|
||||||
|
x1 = box["x"] - box["width"] / 2
|
||||||
|
x2 = box["x"] + box["width"] / 2
|
||||||
|
y1 = box["y"] - box["height"] / 2
|
||||||
|
y2 = box["y"] + box["height"] / 2
|
||||||
|
bounding_box = ((x1, y1), (x2, y2))
|
||||||
|
class_ = box["class"]
|
||||||
|
|
||||||
|
source = Image.open(source_img.image.path).convert("RGB")
|
||||||
|
draw = ImageDraw.Draw(source)
|
||||||
|
text_pos = (bounding_box[0][0] + 5, bounding_box[0][1] + 5)
|
||||||
|
left, top, right, bottom = draw.textbbox(text_pos, class_, font_size=15)
|
||||||
|
draw.rectangle((left, top - 4, right + 5, bottom + 5), fill="blue")
|
||||||
|
draw.text(text_pos, class_, color="white", font_size=15)
|
||||||
|
draw.rectangle(bounding_box, width=5, outline="blue")
|
||||||
|
|
||||||
|
source.save(
|
||||||
|
f"{settings.MEDIA_ROOT}/{source_img.image.name.split('.')[0]}_predicted.{source_img.image.name.split('.')[-1]}",
|
||||||
|
"JPEG",
|
||||||
|
)
|
||||||
|
@ -14,12 +14,9 @@ bleach==6.1.0
|
|||||||
cachetools==5.3.2
|
cachetools==5.3.2
|
||||||
certifi==2023.7.22
|
certifi==2023.7.22
|
||||||
cffi==1.16.0
|
cffi==1.16.0
|
||||||
chardet==4.0.0
|
|
||||||
charset-normalizer==3.3.2
|
charset-normalizer==3.3.2
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
comm==0.1.4
|
comm==0.1.4
|
||||||
contourpy==1.2.0
|
|
||||||
cycler==0.10.0
|
|
||||||
debugpy==1.8.0
|
debugpy==1.8.0
|
||||||
decorator==5.1.1
|
decorator==5.1.1
|
||||||
defusedxml==0.7.1
|
defusedxml==0.7.1
|
||||||
@ -31,7 +28,6 @@ environ==1.0
|
|||||||
exceptiongroup==1.1.3
|
exceptiongroup==1.1.3
|
||||||
executing==2.0.0
|
executing==2.0.0
|
||||||
fastjsonschema==2.19.0
|
fastjsonschema==2.19.0
|
||||||
fonttools==4.45.0
|
|
||||||
fqdn==1.5.1
|
fqdn==1.5.1
|
||||||
ipykernel==6.25.2
|
ipykernel==6.25.2
|
||||||
ipython==8.16.1
|
ipython==8.16.1
|
||||||
@ -56,9 +52,7 @@ jupyterlab==4.0.9
|
|||||||
jupyterlab-widgets==3.0.9
|
jupyterlab-widgets==3.0.9
|
||||||
jupyterlab_pygments==0.3.0
|
jupyterlab_pygments==0.3.0
|
||||||
jupyterlab_server==2.25.2
|
jupyterlab_server==2.25.2
|
||||||
kiwisolver==1.4.5
|
|
||||||
MarkupSafe==2.1.3
|
MarkupSafe==2.1.3
|
||||||
matplotlib==3.8.2
|
|
||||||
matplotlib-inline==0.1.6
|
matplotlib-inline==0.1.6
|
||||||
mistune==3.0.2
|
mistune==3.0.2
|
||||||
mypy-extensions==1.0.0
|
mypy-extensions==1.0.0
|
||||||
@ -70,7 +64,6 @@ notebook==7.0.6
|
|||||||
notebook_shim==0.2.3
|
notebook_shim==0.2.3
|
||||||
numpy==1.26.0
|
numpy==1.26.0
|
||||||
opencv-python==4.9.0.80
|
opencv-python==4.9.0.80
|
||||||
opencv-python-headless==4.8.0.74
|
|
||||||
overrides==7.4.0
|
overrides==7.4.0
|
||||||
packaging==23.2
|
packaging==23.2
|
||||||
pandocfilters==1.5.0
|
pandocfilters==1.5.0
|
||||||
@ -78,7 +71,7 @@ parso==0.8.3
|
|||||||
pathspec==0.11.2
|
pathspec==0.11.2
|
||||||
pexpect==4.8.0
|
pexpect==4.8.0
|
||||||
pickleshare==0.7.5
|
pickleshare==0.7.5
|
||||||
Pillow==10.1.0
|
pillow==10.2.0
|
||||||
pip-autoremove==0.10.0
|
pip-autoremove==0.10.0
|
||||||
platformdirs==3.11.0
|
platformdirs==3.11.0
|
||||||
prometheus-client==0.19.0
|
prometheus-client==0.19.0
|
||||||
@ -95,19 +88,15 @@ pycparser==2.21
|
|||||||
Pygments==2.16.1
|
Pygments==2.16.1
|
||||||
pyparsing==3.1.1
|
pyparsing==3.1.1
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
python-dotenv==1.0.0
|
|
||||||
python-json-logger==2.0.7
|
python-json-logger==2.0.7
|
||||||
python-magic==0.4.27
|
|
||||||
PyYAML==6.0.1
|
PyYAML==6.0.1
|
||||||
pyzmq==25.1.1
|
pyzmq==25.1.1
|
||||||
qtconsole==5.5.1
|
qtconsole==5.5.1
|
||||||
QtPy==2.4.1
|
QtPy==2.4.1
|
||||||
referencing==0.31.1
|
referencing==0.31.1
|
||||||
requests==2.31.0
|
requests==2.31.0
|
||||||
requests-toolbelt==1.0.0
|
|
||||||
rfc3339-validator==0.1.4
|
rfc3339-validator==0.1.4
|
||||||
rfc3986-validator==0.1.1
|
rfc3986-validator==0.1.1
|
||||||
roboflow==1.1.16
|
|
||||||
rpds-py==0.13.2
|
rpds-py==0.13.2
|
||||||
rsa==4.9
|
rsa==4.9
|
||||||
scikit-learn==1.3.1
|
scikit-learn==1.3.1
|
||||||
@ -119,13 +108,11 @@ soupsieve==2.5
|
|||||||
split-folders==0.5.1
|
split-folders==0.5.1
|
||||||
sqlparse==0.4.4
|
sqlparse==0.4.4
|
||||||
stack-data==0.6.3
|
stack-data==0.6.3
|
||||||
supervision==0.17.1
|
|
||||||
terminado==0.18.0
|
terminado==0.18.0
|
||||||
threadpoolctl==3.2.0
|
threadpoolctl==3.2.0
|
||||||
tinycss2==1.2.1
|
tinycss2==1.2.1
|
||||||
tomli==2.0.1
|
tomli==2.0.1
|
||||||
tornado==6.3.3
|
tornado==6.3.3
|
||||||
tqdm==4.66.1
|
|
||||||
traitlets==5.11.2
|
traitlets==5.11.2
|
||||||
types-python-dateutil==2.8.19.14
|
types-python-dateutil==2.8.19.14
|
||||||
typing_extensions==4.8.0
|
typing_extensions==4.8.0
|
||||||
|
Loading…
Reference in New Issue
Block a user