Crazyka51 commited on
Commit
72c9acd
·
verified ·
1 Parent(s): 2525bd6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -52
app.py CHANGED
@@ -24,10 +24,6 @@ import datetime
24
  import math # Import math for log/exp calculations in gamma correction
25
  import gradio as gr
26
  from typing import Optional
27
- from io import BytesIO
28
- input_image = BytesIO(input_image)
29
- img = cv2.imdecode(np.frombuffer(input_image.read(), np.uint8), cv2.IMREAD_COLOR)
30
-
31
 
32
  # Nastavení výchozích cest pro vstupní a výstupní složky (pro Hugging Face/Gradio prostředí)
33
  DEFAULT_INPUT_PATH = "./input_images/" # Můžete změnit dle potřeby
@@ -611,23 +607,24 @@ class ImageProcessor:
611
  return None, None, None
612
 
613
 
614
- def highlight_warm_areas(self):
615
- """Zvýraznění teplých oblastí pomocí HSV odstínu."""
616
  if self.image is None: return None, None # Vrátit None pro každou masku
617
- logging.info("Zvyraznuji teple oblasti v obraze...")
618
  try:
619
  hsv = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
620
  h, _, _ = cv2.split(hsv)
621
- # Definovat rozsah teplých barev v odstínu (Hue)
622
  # Odstín je v OpenCV pro 8-bitové obrazy typicky 0-180
623
  warm_mask_part1 = cv2.inRange(h, 0, 15) # Červené a oranžové (0-15)
624
  warm_mask_part2 = cv2.inRange(h, 165, 180) # Další červené (165-180)
625
  warm_mask = cv2.bitwise_or(warm_mask_part1, warm_mask_part2) # Kombinovat obě části teplé masky
 
626
 
627
- return warm_mask # Vrací šedotónovou binární masku (uint8)
628
  except Exception as e:
629
- logging.error(f"Chyba pri zvraznovani teplych oblasti: {e}", exc_info=True)
630
- return None
631
 
632
 
633
  def detect_dominant_color(self, k=3):
@@ -1043,7 +1040,7 @@ class ImageProcessor:
1043
  r, g, b = self.extract_color_channels()
1044
  h, s, v = self.convert_to_hsv()
1045
  l, a, lab_b = self.convert_to_lab()
1046
- warm_mask = self.highlight_warm_areas()
1047
  dominant_color_img = self.detect_dominant_color() # Toto vrací barevný obrazek nebo None
1048
  yellow_mask = self.extract_color_mask([20, 50, 50], [40, 255, 255], name="yellow") # Příklad masky pro žlutou
1049
  saturation_boosted_gray = self.boost_saturation() # Toto vrací šedotónový nebo None
@@ -1335,44 +1332,15 @@ def process_image_gradio(input_image):
1335
  return [input_image, input_image]
1336
 
1337
 
1338
- def analyze_image(input_image):
1339
- # Převeď na numpy pole
1340
- import cv2
1341
- import numpy as np
1342
- img = cv2.imdecode(np.frombuffer(input_image.read(), np.uint8), cv2.IMREAD_COLOR)
1343
- # Proveď analýzu (příklad, uprav dle své logiky)
1344
- brightness = np.mean(img)
1345
- contrast = img.std()
1346
- # Zde můžeš přidat další metriky (ostrost, šum...)
1347
- sharpness = cv2.Laplacian(img, cv2.CV_64F).var()
1348
- # Výstup jako text
1349
- return f"Jas: {brightness:.2f}\nKontrast: {contrast:.2f}\nOstrost: {sharpness:.2f}"
1350
 
1351
-
1352
- def sharpen_image(input_image):
1353
- import cv2
1354
- import numpy as np
1355
- img = cv2.imdecode(np.frombuffer(input_image.read(), np.uint8), cv2.IMREAD_COLOR)
1356
- # Jednoduché doostření (příklad, nahraď vlastní logikou)
1357
- kernel = np.array([[0, -1, 0], [-1, 5,-1], [0, -1, 0]])
1358
- sharpened = cv2.filter2D(img, -1, kernel)
1359
- _, buf = cv2.imencode('.png', sharpened)
1360
- return buf.tobytes()
1361
-
1362
-
1363
- with gr.Blocks() as demo:
1364
- gr.Markdown("# Smart Image Sharpening & Analysis")
1365
- with gr.Tab("Analýza obrázku"):
1366
- with gr.Row():
1367
- inp = gr.File(label="Nahrát obrázek")
1368
- out = gr.Textbox(label="Výsledky analýzy")
1369
- btn = gr.Button("Analyzovat obrázek")
1370
- btn.click(analyze_image, inputs=inp, outputs=out)
1371
- with gr.Tab("Doostření obrázku"):
1372
- with gr.Row():
1373
- inp2 = gr.File(label="Nahrát obrázek")
1374
- out2 = gr.Image(label="Doostřený obrázek")
1375
- btn2 = gr.Button("Doostřit obrázek")
1376
- btn2.click(sharpen_image, inputs=inp2, outputs=out2)
1377
-
1378
- demo.launch()
 
24
  import math # Import math for log/exp calculations in gamma correction
25
  import gradio as gr
26
  from typing import Optional
 
 
 
 
27
 
28
  # Nastavení výchozích cest pro vstupní a výstupní složky (pro Hugging Face/Gradio prostředí)
29
  DEFAULT_INPUT_PATH = "./input_images/" # Můžete změnit dle potřeby
 
607
  return None, None, None
608
 
609
 
610
+ def highlight_warm_cool_areas(self):
611
+ """Zvýraznění teplých a studených oblastí pomocí HSV odstínu."""
612
  if self.image is None: return None, None # Vrátit None pro každou masku
613
+ logging.info("Zvyraznuji teple a studene oblasti v obraze...")
614
  try:
615
  hsv = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV)
616
  h, _, _ = cv2.split(hsv)
617
+ # Definovat rozsahy teplých a studených barev v odstínu (Hue)
618
  # Odstín je v OpenCV pro 8-bitové obrazy typicky 0-180
619
  warm_mask_part1 = cv2.inRange(h, 0, 15) # Červené a oranžové (0-15)
620
  warm_mask_part2 = cv2.inRange(h, 165, 180) # Další červené (165-180)
621
  warm_mask = cv2.bitwise_or(warm_mask_part1, warm_mask_part2) # Kombinovat obě části teplé masky
622
+ cool_mask = cv2.inRange(h, 90, 130) # Modré a azurové
623
 
624
+ return warm_mask, cool_mask # Vrací šedotónové binární masky (uint8)
625
  except Exception as e:
626
+ logging.error(f"Chyba pri zvraznovani teplych/studenych oblasti: {e}", exc_info=True)
627
+ return None, None
628
 
629
 
630
  def detect_dominant_color(self, k=3):
 
1040
  r, g, b = self.extract_color_channels()
1041
  h, s, v = self.convert_to_hsv()
1042
  l, a, lab_b = self.convert_to_lab()
1043
+ warm_mask, cool_mask = self.highlight_warm_cool_areas()
1044
  dominant_color_img = self.detect_dominant_color() # Toto vrací barevný obrazek nebo None
1045
  yellow_mask = self.extract_color_mask([20, 50, 50], [40, 255, 255], name="yellow") # Příklad masky pro žlutou
1046
  saturation_boosted_gray = self.boost_saturation() # Toto vrací šedotónový nebo None
 
1332
  return [input_image, input_image]
1333
 
1334
 
1335
+ def main():
1336
+ demo = gr.Interface(
1337
+ fn=process_image_gradio,
1338
+ inputs=gr.Image(type="pil", label="Nahrajte obrázek"),
1339
+ outputs=[gr.Image(type="pil", label="Původní obrázek"), gr.Image(type="pil", label="Ostřený obrázek")],
1340
+ title="ImageHub - Zpracování a doostření obrazu",
1341
+ description="Profesionální skript pro zpracování a doostření obrazu. Vložte obrázek a zobrazí se výsledek."
1342
+ )
1343
+ demo.launch()
 
 
 
1344
 
1345
+ if __name__ == "__main__":
1346
+ main()