DmitrMakeev commited on
Commit
1588dce
·
verified ·
1 Parent(s): a692794

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -11
app.py CHANGED
@@ -662,7 +662,7 @@ latest_image = {
662
  "color_percentages": {"green": 0, "yellow": 0, "brown": 0}
663
  }
664
 
665
- def analyze_colors(image_bytes):
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
- # Диапазоны цветов в HSV
674
- green_mask = cv2.inRange(hsv, (36, 40, 40), (86, 255, 255))
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
- green_percent = int((cv2.countNonZero(green_mask) / total_pixels) * 100)
681
- yellow_percent = int((cv2.countNonZero(yellow_mask) / total_pixels) * 100)
682
- brown_percent = int((cv2.countNonZero(brown_mask) / total_pixels) * 100)
683
 
684
  return {
685
- "green": green_percent,
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: