paint-brush
Siyah Beyaz Fotoğraf Nasıl Renklendirilir?ile@alexk0
615 okumalar
615 okumalar

Siyah Beyaz Fotoğraf Nasıl Renklendirilir?

ile Aleksandr Korepanov4m2024/06/07
Read on Terminal Reader

Çok uzun; Okumak

DeOldify, eski fotoğrafları birkaç tıklamayla renklendirmenizi sağlayan bir araçtır. Ücretsiz ve açık kaynaklıdır ve tek yapmanız gereken küçük bir Python kodu yazmaktır.
featured image - Siyah Beyaz Fotoğraf Nasıl Renklendirilir?
Aleksandr Korepanov HackerNoon profile picture
0-item

Hepimizin ebeveynlerimizden, büyükanne ve büyükbabalarımızdan vb. aktarılan eski fotoğraflardan oluşan bir hazinesi var. Çoğu zaman bu fotoğraflar siyah beyaz oluyor ve bazen de onlara renkli olarak hayat vermek istiyoruz. Tarayıcınızda yalnızca birkaç tıklamayla bunu başarabileceğiniz çok sayıda çevrimiçi web sitesi vardır. Ancak bu sitelerle ilgili sorun, nicelik ve nitelik konusundaki birçok kısıtlamada yatmaktadır.


Ek olarak, bu hizmetler genellikle kayıt ve abonelik gerektirir ve bu da oldukça sinir bozucu olabilir.


Bu yazıda, fantastik araç DeOldify'ı kullanarak sınırlama, kayıt veya abonelik sıkıntısı olmadan istediğiniz sayıda fotoğrafı nasıl renklendirebileceğinizi paylaşmak istiyorum.


DeOldify'ın harika bir tanıtımı var ve bunu kullanabilirsiniz, ancak hazırlıksız kişiler için biraz zor görünebilir. Burada DeOldify'ı kullanmanın daha basit bir yolunu göstermek istiyorum.

Ortamın Hazırlanması

Başlamak için Linux veya macOS çalıştıran bir bilgisayara ihtiyacınız olacak. Windows kullanıyorsanız Linux için Windows Alt Sistemini (WSL) kullanarak devam edebilirsiniz.


Ubuntu için gerekli paketlerin bir listesi var:

 sudo apt update sudo apt install python3-pip wget git ffmpeg libsm6 libxext6


Başka bir Linux dağıtımınız varsa listeyi referans olarak kullanabilirsiniz.


MacOS için (ne yazık ki test için net bir macOS'um olmadığından bu yaklaşık bir listedir):

 brew install python wget git ffmpeg libsm libxext


Bir sonraki adım, içindeki her şeyi yapmak için Sandbox adında ayrı bir klasör oluşturmaktır. Başka bir ad seçebilir, hatta hiçbir şey oluşturmamayı seçip bu adımı tamamen atlayabilirsiniz.

 # Optional mkdir Sandbox cd Sandbox


Ardından DeOldify'ı klonlayın:

 git clone https://github.com/jantic/DeOldify.git


DeOldify'ın herhangi bir sürümü veya etiketi yoktur, bu da ana dalla çalıştığımız anlamına gelir. Her an her şeyin en son ustayla çalışması gerektiğine inanıyorum. Ancak her ihtimale karşı, burada her şeyi test ettiğim bir revizyon numarası var:


be725ca6c5f411c47550df951546537d7202c9bc . İsterseniz şuraya göz atabilirsiniz:

 # Optional cd DeOldify git checkout be725ca6c5f411c47550df951546537d7202c9bc cd ..


Bundan sonra tüm Python bağımlılıklarını yükleyin:

 pip3 install --user -r DeOldify/requirements.txt pip3 install --user -r DeOldify/requirements-colab.txt pip3 install --user -r DeOldify/requirements-dev.txt


Daha sonra modeller için bir dizin oluşturun ve modeli indirin:

 mkdir -p DeOldify/models wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O DeOldify/models/ColorizeArtistic_gen.pth


Bu kadar! Ortam hazır; işin en zor kısmı geride kaldı. Şimdi biraz Python kodu yazalım.

Herşeyi Renklendir

Bizim için en ilginç ve kullanışlı fonksiyon ModelImageVisualizer.plot_transformed_image() fonksiyonudur.


Tek yapmamız gereken etrafına kod yazmak.


İşte benim uygulamam:

 #!/usr/bin/python3 from deoldify import device from deoldify.device_id import DeviceId # choices: CPU, GPU0...GPU7 device.set(device=DeviceId.GPU0) from deoldify.visualize import * import warnings import sys import os warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?") # Play with this constant! render_factor = 35 input_dir = sys.argv[1] output_dir = sys.argv[2] if not os.path.isdir(input_dir): print("input directory is not a directory or not exist") sys.exit(1) if os.path.exists(output_dir): print("out directory is already exist") sys.exit(1) os.makedirs(output_dir) root_dir = Path(os.environ['PYTHONPATH']) colorizer = get_image_colorizer(root_folder=root_dir, artistic=True) for filename in os.listdir(input_dir): f = os.path.join(input_dir, filename) if os.path.isfile(f) and (f.endswith(".png") or f.endswith(".jpg") or f.endswith(".jpeg")): image_path = colorizer.plot_transformed_image( path=f, results_dir=Path(output_dir), render_factor=render_factor, compare=True, watermarked=False ) print("{} ready".format(image_path))


İstediğiniz gibi kopyalayabilir, yapıştırabilir ve değiştirebilirsiniz.


Komut dosyası, ilk komut dosyası bağımsız değişkeni olarak iletilen dizindeki tüm .png , .jpg ve .jpeg resimlerini okur ve bunları renklendirerek sonuçları ikinci komut dosyası bağımsız değişkeni olarak iletilen dizine kaydeder. Çıkış dizininin mevcut olmaması gerektiğini unutmayın; betik onu kendisi yaratır. Komut dosyasını Sandbox/runner.py dosyasına kaydettim, ancak isterseniz farklı bir konum ve ad kullanabilirsiniz.


Hadi deneyelim! Sandbox/photos/in içine siyah beyaz bir fotoğraf yerleştirdim ve çıktı dizini Sandbox/photos/out :

 # from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/


PYTHONPATH ortam değişkeni DeOldify dizinine başvurmalıdır.


İşte sonuç:

Siyah beyaz fotoğraf

Renklendirilmiş fotoğraf

Orijinal fotoğraf