Přeskočit na obsah
@365tipu
  • Domů
    • Práce na dálku
    • Twitter for dummies
    • Jak na Mastodon
    • Facebook a marketing
    • Návod pro Instagram
    • Jak na LinkedIn
    • Bezpečný Internet
    • Bezpečnost pro novináře
    • Soukromí na Facebooku
    • Pomocník webdesignera
    • Jak na WordPress
    • Nepostradatelné software
      • Jak na Windows 11
      • Jak na Windows 10
      • Jak na iPhone/iPad
      • Jak na Mac OS
      • Jak na Apple TV/TV+
      • Jak na Apple Watch
      • Jak na Apple AirTag
      • Microsoft Office
      • Linux
    • Jazykový koutek
    • GTD
    • Filmy a TV seriály
    • Recenze
    • Chytrá domácnost
      • Chytrá domácnost
      • Jak na Google Home
      • Amazon Echo a Alexa
      • Apple HomePod
      • Jak na Raspberry Pi
      • Jak na QNAP NAS
      • Netatmo
    • Jak na Home Assistant
  • Všechny štítky
  • Odběr e-mailem
  • RSS/XML
  • Kontakt
    • Kontakt
    • Twitter
    • Facebook
    • BlueSky
    • Mastodon
      • Threads
    • Zásady Cookies (EU)
18. 7. 2023 podle 365tipů
Software

TIP#2465: Python jako nástroj pro rychlé vylepšení fotografií? A jak pomůže ChatGPT

Třeba se to někomu bude hodit. V současných vedrech jsem dostal bláznivý nápad se “naučit” zda by pomocí Pythonu nedalo automatizovat vylepšení fotek, které by to přece jen trochu potřebovaly. Takové základní, určitě nic jako různé pokročilé AI techniky či filtry ve Photoshopu (a tomu podobném). A na kliknutí, tedy tak abych to mohl vyvolat z XnView MP.

Využil jsem to rovnou i k experimentování s Code interpreter v ChatGPT. Umí totiž fascinující věc – nahrajete tam fotku a řeknete slovně co s ní chcete udělat, můžete zkoušet i různé iterace, variace. Ale co hlavně, Code Interpreter to na pozadí dělá (a to jako že fakt) v Pythonu a ten kód vám poskytne. 

Můžete si ten kód i nechat upravit. Třeba aby obrázek nebyl jménem přímo v skriptu, ale bral se jako parametr při spuštění z příkazové řádky.

ChatGPT mi nakonec poskytla tento kód:

import sys
from PIL import Image, ImageEnhance, ImageFilter

def enhance_image(input_image_path, output_image_path):
    # Open the image file
    img = Image.open(input_image_path)

    # Increase contrast (increase by 20%)
    contrast_enhancer = ImageEnhance.Contrast(img)
    enhanced_img = contrast_enhancer.enhance(1.2)

    # Increase saturation (increase by 30%)
    color_enhancer = ImageEnhance.Color(enhanced_img)
    enhanced_img = color_enhancer.enhance(1.3)

    # Apply a detail enhancement filter
    enhanced_img = enhanced_img.filter(ImageFilter.DETAIL)

    # Save the enhanced image to a file
    enhanced_img.save(output_image_path)

if __name__ == "__main__":
    # Use the function to enhance an image
    input_image_path = sys.argv[1]  # First command line argument is input image path
    output_image_path = "enhanced_" + input_image_path  # Output image path
    enhance_image(input_image_path, output_image_path)

Funguje to docela hezky, ale chtěl jsem něco víc, takže jsem si s ChatGPT ještě chvíli povídal a navedla mě na něco pokročilejšího. Díky čemuž jsem nakonec našel na MakeUseOf skript co umí pár dalších vylepšení navíc (a používá jinou knihovnu, OpenCV). Skript co jsem našel jsem očesal o pár zbytečností a nakonec vypadá takto: 

import cv2
import os
# import matplotlib.pyplot as plt
import numpy as np
import sys

def enhance_image(input_image_path, output_image_path):
	# Load the image
	image = cv2.imread(input_image_path)

	# Denoise the image
	denoised_image = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)
	# Contrast Stretching
	contrast_stretched_image = cv2.normalize(denoised_image, None, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

	# Image Sharpening
	kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
	sharpened_image = cv2.filter2D(contrast_stretched_image, -1, kernel=kernel)

	# Brightness Adjustment
	brightness_image = cv2.convertScaleAbs(sharpened_image, alpha=1, beta=5)
	
	# Gamma Correction
	gamma = 1.5
	lookup_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
	gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)

	# Save final image
	cv2.imwrite(output_image_path, gamma_corrected_image)

if __name__ == "__main__":
    # Use the function to enhance an image
    input_image_path = sys.argv[1]  # First command line argument is input image path

    dir_name = os.path.dirname(input_image_path)
    base_name = os.path.basename(input_image_path)
    file_name, file_extension = os.path.splitext(base_name)

    # Construct the output image path
    output_image_path = os.path.join(dir_name, "enhanced_" + file_name + file_extension)

    enhance_image(input_image_path, output_image_path)

Zajímavé je i to, že mi nakonec pomohla i vyřešit to, že do cmd/bat spouštějícího python s tímto skriptem je vstupem kompletní cesta i se jménem obrázku, na což první varianta skriptu nemyslí – stačilo se prostě AI zeptat jak to udělat a poradilo využít os knihovnu a dodala kód, který vlastně vidíte na konci pokročilejšího skriptu.

V XnView MP pak už jen stačilo do lišty přidat cmd tlačítko co volá cmd/bat soubor, který spouští python s výše uvedeným skriptem a předá parametr (%1), tedy cestu+název souboru (což tam dává XnViewMP). 

Stačí zvolit fotku, kliknout v liště, chvíli počkat a ve stejné složce se objeví vylepšený soubor co začíná “enhanced_”. 

Vlevo původní (z iPhone), vpravo vylepšený skriptem

Jen dodám, že výše popsané vyžaduje abyste v počítači měli Python, což je ale snadné. A také abyste si pomocí “pip” přidali knihovny (asi bych měl spíš psát baličky/packages), které jsou ve skriptu použité. Ale to je také  snadné. Třeba ono OpenCV se prostě přidá jako “pip opencv-python”. Já už spoustu věcí mám, Stable Diffusion používá Python, například. A nějaké další skripty v Pythonu už také chvíli používám.

PS: Pokud byste chtěli vidět záznam ChatGPT tak zde. Jen tam nebudou vidět ani nahrané soubory, ani výsledky skriptů. To Code Interpreter neumí. Ale pro ilustraci dialogu se vám to třeba bude hodit.

PS: HEIC to neumí, ale s pillow-heif či pyheif by mohlo, tak možná v další iteraci

Další tipy týkající se ChatGPT

  • TIP#3212: Jak využít ChatGPT pro kontrolu pravopisu? Jde to. Ale něco byste měli vědět

    TIP#3212: Jak využít ChatGPT pro kontrolu pravopisu? Jde to. Ale něco byste měli vědět

    Psal jsem o tom už před dvěma roky v Je možné použít ChatGPT/LLM pro kontrolu pravopisu? Jak na kontrolu (zejména českého) pravopisu?. V novém tipu je čas si ukázat prakticky použitelné řešení.…

  • TIP#3200: Marketing není jedna věc. A právě proto v něm firmy tak často chybují (dlouhé čtení)

    TIP#3200: Marketing není jedna věc. A právě proto v něm firmy tak často chybují (dlouhé čtení)

    Měl jsem dvouhodinový seminář pro Venture Club o marketingu. Nahrál na Plaud, nechal přepsat a poté v ChatGPT doladil prompt pro napsání dlouhého „playbook“ textu a krátkého článku. V tomto článku je…

  • TIP#3187: Co to v AI znamenají tokeny a kontextové okno? A čím to omezuje? Dlouhé čtení

    TIP#3187: Co to v AI znamenají tokeny a kontextové okno? A čím to omezuje? Dlouhé čtení

    TLDR? Tokeny jsou jednotka, ve které AI počítá text; kontextové okno je omezený pracovní prostor, do kterého se musí vejít zadání, historie, přílohy i odpověď a když ho zahltíte, AI začne zapomínat,…

  • TIP#3168: Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně kompletního skriptu (odemčeno)

    TIP#3168: Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně kompletního skriptu (odemčeno)

    Jedna z velmi častých věcí pro zdejší newsletter, ale i pro #tyden. Shrnout článek odněkud do odstavce textu. Není to až tak triviální, jak by se mohlo zdát Související příspěvky TIP#3162: Jak…

  • TIP#3162: Jak na ChatGPT API pro překlad z a do češtiny. Můžete tím snadno nahradit DeepL (odemčeno)

    TIP#3162: Jak na ChatGPT API pro překlad z a do češtiny. Můžete tím snadno nahradit DeepL (odemčeno)

    Zachtělo se mi přestat platit za DeepL a místo toho překládat ty krátké štěky do newsletterů s pomocí ChatGPT. Ale nutná podmínka byla překlad s klávesovou zkratkou. Na což DeepL měla aplikaci,…

  • TIP#3138: Vše o generování obrázků v ChatGPT (GPT Image). Jak to funguje či nefunguje, jak tvořit prompty

    TIP#3138: Vše o generování obrázků v ChatGPT (GPT Image). Jak to funguje či nefunguje, jak tvořit prompty

    Pozor, OpenAI týden před vánoci pustila do světa GPT Image 1.5. Tento tip vznikl pro verzi 1.0, takže některé věci budou platit, některé už ne. Pouštím ho ven, aby bylo možné odchytat…

  • TIP#3127: Co je nového v GPT-Image 1.5? Tedy v nové verzi generování fotek a obrázků v ChatGPT

    TIP#3127: Co je nového v GPT-Image 1.5? Tedy v nové verzi generování fotek a obrázků v ChatGPT

    OpenAI před Vánoci uvedla GPT-Image 1.5, tedy novější generátor obrázků “integrovaný” do ChatGPT. Původní verze už byla prakticky nepoužitelná. Pomalá a běžně nevygenerovala vůbec nic.  Co je nového? Související příspěvky TIP#3138: Vše…

  • TIP#3120: ChatGPT umí generovat prompty pro jiné obrázkové či video generátory

    TIP#3120: ChatGPT umí generovat prompty pro jiné obrázkové či video generátory

    Zcela běžně používám ChatGPT pro tvorbu promptů pro Midjourney, ale třeba i scénáře pro video v Sora či Gemini.  Použít můžete ale i jiné AI, pokud chcete, umí to také. Související příspěvky…

  • TIP#3078: Jak text VELKÝMI PÍSMENY převést na správná malá a velká písmena? Jasně že přes ChatGPT 

    TIP#3078: Jak text VELKÝMI PÍSMENY převést na správná malá a velká písmena? Jasně že přes ChatGPT 

    Zejména v tiskových zprávách potkáte zvláštní zlozvyk. Agentury PÍŠÍ TITULKY VELKÝMI PÍSMENY.  A v médiích to pak redaktor musí dostat do použitelné podoby. Což není až tak triviální, do cesty se pletou…

  • TIP#3076: Detekce AI textu. K čemu je dobrá, kdy funguje a kdy ne. Jaké detektory můžete použít

    TIP#3076: Detekce AI textu. K čemu je dobrá, kdy funguje a kdy ne. Jaké detektory můžete použít

    Když se dnes ptáme, jestli konkrétní text napsal člověk nebo umělá inteligence, odpověď zní: odhadnout to často jde, ale spolehlivě to nepoznáte. Nástroje na detekci AI pracují s čísly a grafy, ale…

  • TIP#3067: RayCast nenačítá proměnné prostředí, jak na ukládání API klíčů? A jak zjistit co Raycast v prostředí má? Co když spouštíte přímo Python?

    TIP#3067: RayCast nenačítá proměnné prostředí, jak na ukládání API klíčů? A jak zjistit co Raycast v prostředí má? Co když spouštíte přímo Python?

    Když Raycast spouští skripty přes „Create Script Command„, běží v omezeném prostředí shellu. Tento shell: Související příspěvky TIP#3168: Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně…

  • TIP#3066: AI vytvořené texty jde poznat podle pomlček, respektive podle en dash. Je to tak?

    TIP#3066: AI vytvořené texty jde poznat podle pomlček, respektive podle en dash. Je to tak?

    Nejdřív ochránci čistoty textu křičeli, že používáte “-” místo “–”, tedy spojovníku. Teď křičí, že našli v textu spojovník, a tím pádem je to AI generovaný text.  Související příspěvky TIP#3212: Jak využít…

  • TIP#3061: Necháváte si od ChatGPT (či jiné AI) psát skripty? Pár zásadních tipů i delší přehled

    TIP#3061: Necháváte si od ChatGPT (či jiné AI) psát skripty? Pár zásadních tipů i delší přehled

    Už dlouho používám ChatGPT pro psaní různorodých skriptů. Před nedávnem jsem přidal do výbavy ChatGPT API a řešil pár dalších skriptů. A opět mi to připomnělo pár věcí, které se hodí. Související…

  • Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně kompletního skriptu 💎

    Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně kompletního skriptu 💎

    Jedna z velmi častých věcí pro zdejší newsletter, ale i pro #tyden. Shrnout článek odněkud do odstavce textu. Není to až tak triviální, jak by se mohlo zdát Související příspěvky TIP#3168: Jak…

  • TIP#3057: Klienti pro LLM přes API: jak pohodlně chatovat s libovolnou AI

    TIP#3057: Klienti pro LLM přes API: jak pohodlně chatovat s libovolnou AI

    Pokud už máte nějaký ten API přístup k AI, případně máte lokální AI, tak je dost vhodné mít klienta, který ji umožní používat tak jak používáte web/aplikaci pro ChatGPT/Perplexity a další.  Související…

1 2 3 … 6
Další stránka»

Související příspěvky

TIP#3061: Necháváte si od ChatGPT (či jiné AI) psát skripty? Pár zásadních tipů i delší přehled
TIP#3168: Jak na ChatGPT API pro souhrn článků na Internetu. Další velmi dobrý příklad včetně kompletního skriptu (odemčeno)
TIP#3162: Jak na ChatGPT API pro překlad z a do češtiny. Můžete tím snadno nahradit DeepL (odemčeno)

ChatGPT Fotografie Jak šetřit čas Obrázky Programování Python Software Umělá inteligence

Předchozí článekTIP#2464: Mohu na Linkedin v příspěvku použít libovolnou cizí fotografii či video?Další článek TIP#2466: Diablo IV: Stronghold

Nejnovější příspěvky

  • TIP#3253: Co je to latence a proč to hraje roli (nejen) při hraní her
  • TIP3252: Chladit notebooky podložkou? Co byste měli vědět
  • TIP#3251: Kouzelná meteostanice ATMOS řeší problém, o kterém ani nevíte
  • TIP#3250: Jak zabránit tomu, aby se Mac po restartu znovu otevřel se všemi aplikacemi z poslední relace
  • TIP#3249: Zálohovat počítači či NAS? Rozhodně ano. Ale kam a jak? Včetně velkého přehledu cloudových služeb

Nejčtenější

Přispět na provoz můžete

Přispějte. 500 Kč můžete změnit dle vlastního uvážení. Z částky zaplatíme DPH a pochopitelně daně platbou na účet 331049001/5500, spec. symbol 365. Částku si můžete změnit. Z platby odvádíme DPH a daníme ji.

Zdejší tipy na zajímavé/užitečné věci obsahují affialiate odkazy na Alzu/Aliexpres

... nebo placeným odběrem

Staňte se platícím odběratelem newsletteru. 5 USD/měsíc, 50 USD/rok nebo dle vlastního uvážení od 100 USD/rok. Každou středu a neděli nálož informací.

Kontakt a tak

Kontakt: 365tipu@gmail.com

Veškerý obsah zde uveřejněný je CC-BY-NC-SA

Oznámení