Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -662,7 +662,7 @@ latest_image = {
|
|
662 |
"color_percentages": {"green": 0, "yellow": 0, "brown": 0}
|
663 |
}
|
664 |
|
665 |
-
def
|
666 |
image_bytes.seek(0)
|
667 |
file_bytes = np.asarray(bytearray(image_bytes.read()), dtype=np.uint8)
|
668 |
img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
|
@@ -670,23 +670,26 @@ def analyze_colors(image_bytes):
|
|
670 |
# Преобразуем в HSV
|
671 |
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
|
672 |
|
673 |
-
#
|
674 |
-
|
675 |
-
yellow_mask = cv2.inRange(hsv, (50, 30, 180), (60, 100, 255))
|
676 |
-
brown_mask = cv2.inRange(hsv, (8, 50, 30), (18, 255, 130))
|
677 |
|
678 |
total_pixels = img.shape[0] * img.shape[1]
|
679 |
|
680 |
-
|
681 |
-
|
682 |
-
brown_percent = int((cv2.countNonZero(brown_mask) / total_pixels) * 100)
|
683 |
|
684 |
return {
|
685 |
-
"
|
686 |
-
"yellow": yellow_percent,
|
687 |
-
"brown": brown_percent
|
688 |
}
|
689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
690 |
@app.route('/last_image', methods=['GET'])
|
691 |
def get_last_image():
|
692 |
if latest_image["data"] is None:
|
|
|
662 |
"color_percentages": {"green": 0, "yellow": 0, "brown": 0}
|
663 |
}
|
664 |
|
665 |
+
def analyze_fixed_color(image_bytes, target_color_hsv):
|
666 |
image_bytes.seek(0)
|
667 |
file_bytes = np.asarray(bytearray(image_bytes.read()), dtype=np.uint8)
|
668 |
img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
|
|
|
670 |
# Преобразуем в HSV
|
671 |
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
|
672 |
|
673 |
+
# Создаём маску для точного цвета
|
674 |
+
fixed_color_mask = cv2.inRange(hsv, target_color_hsv, target_color_hsv)
|
|
|
|
|
675 |
|
676 |
total_pixels = img.shape[0] * img.shape[1]
|
677 |
|
678 |
+
# Считаем процент пикселей этого цвета
|
679 |
+
color_percent = int((cv2.countNonZero(fixed_color_mask) / total_pixels) * 100)
|
|
|
680 |
|
681 |
return {
|
682 |
+
"color_percent": color_percent
|
|
|
|
|
683 |
}
|
684 |
|
685 |
+
# Пример использования для поиска фиксированного жёлтого цвета
|
686 |
+
# Предположим, что целевой жёлтый цвет в HSV будет (50, 100, 255)
|
687 |
+
# Этот цвет точно соответствует жёлтому, без диапазона
|
688 |
+
yellow_hsv = (50, 100, 255) # Характеристика для чистого жёлтого цвета
|
689 |
+
|
690 |
+
result = analyze_fixed_color(image_bytes, yellow_hsv)
|
691 |
+
print(result)
|
692 |
+
|
693 |
@app.route('/last_image', methods=['GET'])
|
694 |
def get_last_image():
|
695 |
if latest_image["data"] is None:
|