Spaces:
Running
Running
Update MeAI_Maincode/Detectskindisease.py
Browse files
MeAI_Maincode/Detectskindisease.py
CHANGED
|
@@ -4,7 +4,7 @@ from PIL import Image
|
|
| 4 |
import io
|
| 5 |
import numpy as np
|
| 6 |
import os
|
| 7 |
-
key = "
|
| 8 |
trans_disease = {
|
| 9 |
"acne": "mụn",
|
| 10 |
"actinic_keratosis": "chứng dày sừng quang hóa",
|
|
@@ -133,63 +133,68 @@ trans_description = {
|
|
| 133 |
def detect_skin_disease(image, key):
|
| 134 |
try:
|
| 135 |
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
|
|
|
| 140 |
|
| 141 |
-
url = "https://detect-skin-
|
|
|
|
| 142 |
files = {"image": ("image.png", img_byte_array, "image/png")}
|
| 143 |
headers = {
|
| 144 |
"X-RapidAPI-Key": key,
|
| 145 |
-
"X-RapidAPI-Host": "detect-skin-
|
| 146 |
}
|
| 147 |
response = requests.post(url, files=files, headers=headers)
|
| 148 |
|
| 149 |
-
if response.status_code != 200:
|
| 150 |
-
return f"Lỗi API: HTTP {response.status_code} - {response.reason}"
|
| 151 |
-
response_json = response.json()
|
| 152 |
|
|
|
|
|
|
|
|
|
|
| 153 |
output = ""
|
| 154 |
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
|
| 162 |
-
# Get body part
|
| 163 |
-
body_part = response_json.get('bodyPart')
|
| 164 |
-
if body_part is not None:
|
| 165 |
-
vnese_body = trans_body.get(body_part, body_part)
|
| 166 |
-
output += f"Phần của cơ thể: {vnese_body}\n"
|
| 167 |
|
| 168 |
-
# Get results and probabilities
|
| 169 |
-
results = response_json.get('results')
|
| 170 |
-
if results is not None:
|
| 171 |
-
output += "Kết quả phân tích:\n"
|
| 172 |
|
| 173 |
-
# Sort results by probability in descending order
|
| 174 |
-
sorted_results = sorted(results.items(), key=lambda x: x[1], reverse=True)
|
| 175 |
|
| 176 |
-
|
|
|
|
|
|
|
|
|
|
| 177 |
probability_percent = probability * 100
|
| 178 |
vnese_disease = trans_disease.get(disease, disease)
|
| 179 |
-
|
| 180 |
-
|
| 181 |
if probability_percent >= 10:
|
| 182 |
-
|
| 183 |
|
| 184 |
-
|
|
|
|
|
|
|
| 185 |
except Exception as e:
|
| 186 |
-
return f"
|
|
|
|
| 187 |
|
| 188 |
|
| 189 |
|
| 190 |
|
| 191 |
|
| 192 |
-
def create_skin_tab(skinkey="
|
| 193 |
css = """
|
| 194 |
.textboxskin {
|
| 195 |
font-sxxxxize: 50px; !important;
|
|
|
|
| 4 |
import io
|
| 5 |
import numpy as np
|
| 6 |
import os
|
| 7 |
+
key = "b71d1f41camsh51cbf0a2df5facap1b9e25jsn2ce94a61f252"
|
| 8 |
trans_disease = {
|
| 9 |
"acne": "mụn",
|
| 10 |
"actinic_keratosis": "chứng dày sừng quang hóa",
|
|
|
|
| 133 |
def detect_skin_disease(image, key):
|
| 134 |
try:
|
| 135 |
|
| 136 |
+
# Convert NumPy array to image file-like object
|
| 137 |
+
img = Image.fromarray((image).astype('uint8'))
|
| 138 |
+
img_byte_array = io.BytesIO()
|
| 139 |
+
img.save(img_byte_array, format='PNG')
|
| 140 |
+
img_byte_array.seek(0)
|
| 141 |
|
| 142 |
+
url = "https://detect-skin-disease.p.rapidapi.com/facebody/analysis/detect-skin-disease"
|
| 143 |
+
# files = {"image": img_byte_array}
|
| 144 |
files = {"image": ("image.png", img_byte_array, "image/png")}
|
| 145 |
headers = {
|
| 146 |
"X-RapidAPI-Key": key,
|
| 147 |
+
"X-RapidAPI-Host": "detect-skin-disease.p.rapidapi.com"
|
| 148 |
}
|
| 149 |
response = requests.post(url, files=files, headers=headers)
|
| 150 |
|
|
|
|
|
|
|
|
|
|
| 151 |
|
| 152 |
+
|
| 153 |
+
response_json = response.json()
|
| 154 |
+
|
| 155 |
output = ""
|
| 156 |
|
| 157 |
+
if 'data' in response_json:
|
| 158 |
+
body_part = response_json['data'].get('body_part')
|
| 159 |
+
results = response_json['data'].get('results_english')
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
if body_part is not None:
|
| 165 |
+
vnese_body = trans_body[body_part]
|
| 166 |
+
output += f"Phần của cơ thể: {vnese_body} ({body_part})\n"
|
| 167 |
+
|
| 168 |
+
if results is not None:
|
| 169 |
+
output += " Kết quả phân tích: "
|
| 170 |
+
|
| 171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
|
|
|
|
|
|
|
| 174 |
|
| 175 |
+
# Sort the results by probability percentage in descending order
|
| 176 |
+
sorted_results = sorted(results.items(), key=lambda x: x[1], reverse=True)
|
| 177 |
+
|
| 178 |
+
for disease, probability in sorted_results:
|
| 179 |
probability_percent = probability * 100
|
| 180 |
vnese_disease = trans_disease.get(disease, disease)
|
| 181 |
+
|
| 182 |
+
|
| 183 |
if probability_percent >= 10:
|
| 184 |
+
output += f"{vnese_disease} : {probability_percent:.2f}%\n"
|
| 185 |
|
| 186 |
+
return output
|
| 187 |
+
else:
|
| 188 |
+
return "Không có dữ liệu phản hồi từ API."
|
| 189 |
except Exception as e:
|
| 190 |
+
return f"Error: {str(e)}"
|
| 191 |
+
|
| 192 |
|
| 193 |
|
| 194 |
|
| 195 |
|
| 196 |
|
| 197 |
+
def create_skin_tab(skinkey="b71d1f41camsh51cbf0a2df5facap1b9e25jsn2ce94a61f252"):
|
| 198 |
css = """
|
| 199 |
.textboxskin {
|
| 200 |
font-sxxxxize: 50px; !important;
|