Standart bir gerçek renkli görüntü ve tek bir 24 bit RGB rengi (0 ile 255 arasında üç sayı) alan bir program yazın . Giriş görüntüsünü, ortalama rengi tam olarak girilen tek renk olacak şekilde değiştirin (veya aynı boyutlara sahip yeni bir görüntü çıktılayın) . Giriş görüntüsündeki pikselleri, bunu başarmak için istediğiniz şekilde değiştirebilirsiniz, ancak amaç, renk değişikliklerini görsel olarak mümkün olduğunca fark edilmez hale getirmektir .
Ortalama renk RGB görüntünün çok üç kümesidir aritmetik ortalama , her renk kanalı için bir tane olmak. Ortalama kırmızı değer, görüntüdeki tüm piksellerdeki kırmızı değerlerin toplamının, en yakın tam sayıya yuvarlanmış toplam piksel sayısına (görüntü alanı) bölünmesiyle elde edilir. Yeşil ve mavi ortalamalar aynı şekilde hesaplanır.
Bu Python 2 ( PIL ile ) komut dosyası, çoğu görüntü dosyası formatının ortalama rengini hesaplayabilir:
from PIL import Image
print 'Enter image file'
im = Image.open(raw_input()).convert('RGB')
pixels = im.load()
avg = [0, 0, 0]
for x in range(im.size[0]):
for y in range(im.size[1]):
for i in range(3):
avg[i] += pixels[x, y][i]
print 'The average color is', tuple(c // (im.size[0] * im.size[1]) for c in avg)
(Orada benzer ortalama renk programlardır burada , ama mutlaka aynı hesaplamayı yapmıyoruz.)
Programınız için temel gereksinim, herhangi bir giriş görüntüsü için, karşılık gelen çıktının ortalama renginin , Python snippet'i veya eşdeğer bir kod tarafından değerlendirildiği gibi girilen renkle tam olarak eşleşmesi gerektiğidir . Çıktı görüntüsü de girdi görüntüsü ile aynı boyutlara sahip olmalıdır.
Böylece, teknik olarak tüm girdiyi belirtilen ortalama rengi renklendiren bir program gönderebilirsiniz (çünkü ortalama her zaman bu renk olurdu), ancak bu bir popülerlik yarışmasıdır - en yüksek oy sayısına sahip olmak kazanır ve bu kadar önemsiz boyun eğme size çok fazla oy vermeyecektir. İnsan vizyonundaki tuhaflıklardan yararlanmak veya görüntüyü küçültmek ve etrafına renkli bir sınır çizmek gibi yeni fikirler (umarım) size oy verecektir.
Ortalama renklerin ve görüntülerin belirli kombinasyonlarının son derece dikkat çekici renk değişiklikleri gerektirdiğini unutmayın. Örneğin, eşleşecek ortalama renk siyah olsaydı (0, 0, 0), herhangi bir giriş görüntüsünün tamamen siyah yapılması gerekir, çünkü herhangi bir pikselin sıfır olmayan değerleri varsa, ortalamayı sıfırdan farklı yaparlar ( engelleme yuvarlama hataları). Oy verirken bu tür sınırlamaları göz önünde bulundurun.
Test Görüntüleri
Bazı görüntüler ve varsayılan ortalama renkleri ile oynamak için. Tüm boyutlar için tıklayınız.
A. ortalama (127, 127, 127)
Gönderen fejesjoco 'ın tüm renkleriyle Görüntüler cevap . Bulunan orijinal üzerinde kendi blogunda .
B. ortalama (62, 71, 73)
Yokohama . Geobits tarafından sağlanmıştır .
C. ortalama (115, 112, 111)
Tokyo . Geobits tarafından sağlanmıştır .
D. ortalama (154, 151, 154)
E. ortalama (105, 103, 102)
Shasta Dağı . Sağladıklarım.
F. ortalama (75, 91, 110)
notlar
- Programınızın kullandığı kesin girdi ve çıktı biçimleri ve görüntü dosyası türleri önemli değildir. Programınızı nasıl kullanacağınızın açık olduğundan emin olun.
- Muhtemelen iyi bir fikirdir (ancak teknik olarak bir gereklilik değildir), bir görüntünün zaten hedef ortalama rengine sahip olması durumunda, çıktısının olduğu gibi çıkması gerekir.
- Lütfen ortalama renk girişine (150, 100, 100) veya (75, 91, 110) olarak test görüntüleri gönderin, böylece seçmenler farklı çözümleri aynı girişleri görebilir. (Bundan daha fazla örnek göndermek iyidir, hatta teşvik edilir.)