OpenCV a zpracování fotografií

Re:OpenCV a zpracování fotografií
« Odpověď #15 kdy: 23. 02. 2023, 15:44:34 »
Mam v planu to pak nasadit na Synology nasku, hodne veci se da vyresit dockerem. Identifikace obliceju, obektu, zvirat, to vsecko lze, ale nez to dam dokupy  :) Aplikace by na to potreba ani nebyla, pokud by to melo bezet v cronu, probihalo by vse automaticky. Jsou i takove moznosti, ze se pomoci python zapise informace do metatagu fotek.

dobře, ale ty k tomu aplikace rozpoznala nebo identifikovala známé obličeje musím mít nějakou databází fotek na kterých určíš sám, že tohle je tvoje manželka a tohle jsou třeba tvé děti. Databáze bude na Synology. Pak potřebuješ knihovny, které dělají analýzu fotek na disku, také na Synology.
Jde mi o to, že pro analýzu fotek mohu mít vše potřebné na Synology a vůbec nemusím být připojený na internetu. Nechci na analýzu posílat někam do cloudu své privátní fotky.

Chápu to tak dobře ?


Re:OpenCV a zpracování fotografií
« Odpověď #16 kdy: 23. 02. 2023, 17:04:23 »
To vsechno jde udelat, vytvori se trenovaci soubory. Jsem teprve na zacatku. treba pomoci openCV se projedou fotky, detekuji se obliceje, vyrobi se vyrezy jen s nimi... dal jsem jeste nedosel, napriklad jak urcim, ke kteremu jemu je priradit.
 

Re:OpenCV a zpracování fotografií
« Odpověď #17 kdy: 24. 02. 2023, 13:19:36 »
Zkousim k zjisteni rozmazani imagemagick, je to o hodne pomalejsi, ale vysledky vypadaji lepe

import os
import subprocess

# Cesta k složce se vstupními obrázky
input_folder = '/home/uziv/TESTY/IN'
# Cesta k výstupní složce
output_folder = '/home/uziv/TESTY/OUT'

# Nastavení prahové hodnoty pro detekci rozmazání
THRESHOLD_BLUR = 0.1

# Krok 1: Načtení obrázků a detekce rozmazání
for file_name in os.listdir(input_folder):
    # Zkontrolujeme, zda se jedná o soubor s obrázkem
    if file_name.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp')):
        input_path = os.path.join(input_folder, file_name)
        output_path = os.path.join(output_folder, file_name)

        # Spuštění příkazu Identify pro zjištění velikosti obrázku
        identify_output = subprocess.check_output(['identify', '-format', '%w,%h', input_path])
        width, height = identify_output.decode().split(',')

        # Spuštění příkazu Convolve pro získání konvoluce obrázku s Gaussovým jádrem
        convolve_output = subprocess.check_output(['convert', input_path, '-colorspace', 'gray', '-define', 'convolve:scale=1.5', '-morphology', 'Convolve', 'Gaussian:0x3', '-format', '%[fx:maxima.mean]', 'info:'])
        maxima_mean = float(convolve_output.decode())

        # Vypočítání průměru a směrodatné odchylky z gradientů vodorovného a svislého směru
        sobel_output = subprocess.check_output(['convert', input_path, '-colorspace', 'gray', '-define', 'convolve:scale=1.5', '-define', 'convolve:normalize=false', '-morphology', 'Convolve', 'Sobel:0x1', '-format', '%[fx:mean],%[fx:standard_deviation]', 'info:'])
        sobel_mean, sobel_std = map(float, sobel_output.decode().split(','))

        # Pokud je hodnota maximálního průměru gradientů menší než prahová hodnota,
        # obrázek se považuje za rozmazaný a přesune se do složky
        if maxima_mean < THRESHOLD_BLUR:
            output_subfolder = os.path.join(output_folder, 'rozmazane')
        else:
            output_subfolder = os.path.join(output_folder, 'ostre')

        if not os.path.exists(output_subfolder):
            os.makedirs(output_subfolder)

        # Uložíme výsledný obrázek do příslušné složky
        output_path = os.path.join(output_subfolder, file_name)
        os.replace(input_path, output_path)

        print(f"Obrázek {file_name} byl přesunut do složky {output_subfolder}.")
    else:
        print(f"Soubor {file_name} není obrázek, přeskočen.")

RDa

  • *****
  • 2 674
    • Zobrazit profil
    • E-mail
Re:OpenCV a zpracování fotografií
« Odpověď #18 kdy: 24. 02. 2023, 13:55:57 »
Pokud jde o jpeg soubory, tak bych rozmazani detekoval treba velikosti AC komponent (at uz absoutni hodnotu, nebo zkompresenou velikost).

V zjednousene podobe to znamena seradit soubory dle velikosti a ty mensi budou mit holt mensi entropii a vice rozmazanych mist.

Pokud neudelas relativni klasifikaci v nejake mrizce, tak tento zpusob bude mit stejne neduhy jako naivni mira bluru - tj. prijdes o vsechny fotky ktere maji treba v sobe oblohu.

Re:OpenCV a zpracování fotografií
« Odpověď #19 kdy: 24. 02. 2023, 14:03:57 »
Diky za pripominku. Je to komplexni. Jeste jsem nezkousel takove ty fotky, kde je pozadi zamerne rozostrene.