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_”.




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#2566: Odpovídá vám ChatGPT náhodné zmatené věci? Na češtinu anglicky? Co s tím?
Časem na to nejspíš narazíte. Pokud budete mít moc dlouho session (chat), tak po vložení delšího textu (třeba textu článku), vám místo smysluplné odpovědi dorazí něco zcela náhodného, nesmyslného a anglicky, ačkoliv…
-
TIP#2559: Má ChatGPT přístup k Internetu? Jak funguje Browse with Bing?
ChatGPT původně měla Browse with Bing jako volitelnou variantu, ale od listopadu 2023 je funkčnost přístupu k Internetu zahrnuta přímo v ChatGPT – nutno dodat, že jde o placenou (Plus) verzi a…
-
TIP#2557: Je možné použít ChatGPT/LLM pro kontrolu pravopisu? Jak na kontrolu (zejména českého) pravopisu?
Už jsme tu probírali, zda je vhodné ChatGPT používat pro překlady místo (zejména) DeepL a také zda jde použít pro doplnění nabodeníček (diakritiky). Takže je logické se ptát, zda můžete ChatGPT použít…
-
DALL-E 3 v ChatGPT: Jak vytvořit obrázek podle obrázku? (13)
Tohle je trochu složitější a ne 100% blbu vzdorné, ale dá se to použít snadno a občas i s velmi hezkými výsledky. Vyjdeme z toho, že máte obrázek či fotku a chcete…
-
TIP#2552: Jak na vlastní GPT (Custom GPT) v ChatGPT. Kompletní návod
Na počátku října ChatGPT získala novou verzi ve které můžete vytvářet vlastní GPT. Můžete to brát jako rozšířenější možnost custom instructions – určíte co má vaše GPT dělat, čím se má řídit,…
-
TIP#2550: DALL-E 3 v ChatGPT: Interní instrukce
Jedna z velmi zajímavých věcí na Dall E 3 je, že existují interní instrukce určující co se smí či nesmí generovat, jak se zachází s prompty, kolik obrázků lze žádat (v jednom…
-
TIP#2547: Jsou nějaké rozdíly v různých variantách ChatGPT? Včetně té v Bing Chat
Tohle byste měli vědět. Existuje ChatGPT 3.5 a ChatGPT 4 a je asi vcelku jasné, že mezi nimi jsou rozdíly. Ale co když v Chat GP4 aktivujete Browse with Bing, Data Analytics…
-
DALL-E 3 v ChatGPT: Příklady zadání (prompts), druhé pokračování (12)
Generujte si fraktály. Velmi detailní fotografie a skvělá pozadí. Jde generovat příběh? Engineering-style draft of. Design ikon a fontů. Pixel art. Související příspěvky TIP#3138: Vše o generování obrázků v ChatGPT (GPT Image). Jak…
-
TIP#2544: Jak funguje GPT4V/GPT4Vision, ChatGPT co umí “vidět”. Kde to najdu?
GPT4V/GPT4Vision je další dílek schopností ChatGPT 4 – přidává možnost nahrát obrázek (vyfotit fotku) a umělá inteligence se pokusí zjistit co v něm je a umožní vám pokračovat v konverzaci – můžete…
-
DALL-E 3 v ChatGPT: Custom Instructions pro zásadní proměnu promptů i výstupů (11)
Glibatree na YouTube v Try THIS to instantly make DALL·E 3 way better!!! ukazuje dost rozsáhlou sadu Custom Instructions co dokáže přimět Dall E 3 k vytváření lepších promptů – a nutno…
-
DALL-E 3 v ChatGPT: Fotografické filtry (10)
Asi nepřekvapí, že DALL E 3 v Chat GPT umí (nebo to alespoň to tvrdí) různé fotografické filtry dostupné ve Photoshopu či Instagramu. Můžete se i zeptat a poskytne vám následující přehled…
-
DALL-E 3 v ChatGPT: Kompozice a jak se zbavit symetrie. Co dál neumí a nějaké nejasnosti (9)
V půlce října do ChatGPT dorazila DALL-E-3, tedy generativní AI. Ta co je už pár týdnů v Bing Create. Musíte mít placenou ChatGPT a v menu GPT-4 aktivovat, že chcete generovat obrázky.…
-
DALL-E 3 v ChatGPT: Jak použít pro Příběhy na Instagramu? (8)
Tohle je vlastně relativně snadné, umí generovat na výšku (1024×1792) a pro Příběhy (Stories) potřebujete 1080×1920. Takže vygenerované se tam docela rozumně vejde. Buď zvětšit na 1080×1890 nebo 1097×1920 – v obou…

















