Warna rata-rata suatu gambar
Para ilmuwan telah dapat menentukan warna rata-rata alam semesta, tetapi dalam berapa banyak byte yang dapat kita temukan warna rata-rata pada suatu gambar?
Tugas Anda
Input Anda akan menjadi gambar tunggal yang Anda perlu menemukan rata-rata warna dalam gambar dan menghasilkan string warna hex ( #??????
). Gambar dapat berupa salah satu format berikut
- JPEG / JFIF
- JPEG 2000
- BERTENGKAR
- GIF
- BMP
- PNG
- PNM
- PPM
Input juga dapat diambil sebagai URL / URI ke gambar.
Fungsi bawaan yang menghitung rata-rata atau sampel gambar sekaligus seperti ImageMeasurements
itu tidak diizinkan.
Contohnya
Hasil akan sedikit berbeda tergantung pada bagaimana Anda menghitung rata-rata dan model warna yang Anda gunakan. Saya telah menambahkan nilai RGB dan LCH (HSV) untuk gambar di bawah ini.
output: #53715F
RGB, mungkin juga #3B7D3D
LCH (HSV)
output: #8B7D41
RGB, #96753C
LCH (HSV)
sumber
95.6...
,, yang telah Anda bulatkan ke95
dalam output yang ditentukan.Jawaban:
Pyth -
2322191816 byteTransposes untuk mendapatkan semua saluran, lalu jumlahkan, bagi, dan hubungkan masing-masing. Selesai dengan menyatukan dan mengawali a
#
.Mengambil nama file gambar (tipe apa saja) dari stdin dan output ke stdout. SANGAT LAMBAT .
Contoh dijalankan
sumber
PIL
perpustakaan untuk menangani gambar. Lihat di sini untuk sumber yang tepat.Bash, 46 byte
ImageMagick mengubah skala gambar menjadi satu piksel yang berisi rata-rata warna dalam gambar kemudian mengeluarkannya sebagai teks.
sumber
MATLAB - 68 byte
Gambar dibaca bersama
imread
denganuigetfile
untuk membuka GUI untuk memilih gambar yang ingin Anda muat. Asumsi dengan kode ini adalah bahwa semua gambar adalah RGB, dan untuk menghitung warna rata-rata, kami menjumlahkan masing-masing saluran secara individu kemudian membagi oleh sebanyak mungkin elemen dalam satu saluran, yang merupakan jumlah total piksel dalam gambar RGB ( ) dibagi dengan 3. Karena rata-rata dapat menghasilkan nilai titik apung, panggilan ke diperlukan untuk membulatkan angka ke bawah ke nol . dikombinasikan dengan string format heksadesimal ( ) digunakan untuk mencetak setiap nilai integer dalam rata-rata menjadi setara hex-nya. Namun, ada untuk memastikan bahwa 0 ekstra empuk ke kiri jika nilai rata-rata untuk setiap saluran kurang dari 16numel
(I)
fix
sprintf
%x
02
* .Contoh Berjalan
Yang menyenangkan
imread
adalah Anda bisa membaca gambar langsung dari URL. Sebagai contoh yang dapat direproduksi, anggap Anda telah mengunduh gambar di komputer Anda dan telah menjalankan kode di atas ... tetapi untuk demonstrasi, saya akan membaca gambar langsung dari Code Golf:Gambar pertama
Gambar kedua
* Catatan: Ini adalah upaya kolaborasi yang dilakukan oleh pengguna StackOverflow di ruang obrolan MATLAB dan Oktaf .
sumber
CJam, 27 byte
Ini membaca gambar PPM dari STDIN.
CJam tidak memiliki pemrosesan gambar bawaan, jadi kode ini mengharapkan ASCII Portable PixMap (nomor ajaib P3) dengan palet 24-bit penuh (nilai maksimum 255) dan tidak ada komentar.
Uji coba
Bagaimana itu bekerja
sumber
HTML5 + JavaScript (ES6), 335 byte
Ini tidak akan menang, tetapi saya senang melakukannya.
Menggunakan HTML5 Canvas API . Input adalah URL dari gambar yang mendukung CORS .
Demo
Karena ES6, saat ini hanya berfungsi di Firefox dan Edge.
sumber
new Image
denganImage()
?TypeError: Constructor Image requires 'new'
W='width'
danH='height'
menggunakani[H]
ataui[W]
Python [3] + SciPy,
144133121Memuat data piksel, jumlah untuk setiap saluran, dibagi menurut ukuran *, format. Nilai dibulatkan ke nol.
* ukuran = lebar * tinggi * saluran, sehingga dikalikan dengan 3
sumber
input()
untuk mengambil jalan? Ini akan menghemat 20 byte.import scipy
,. Ubahm.imread
kemisc.imread
.NameError: name 'misc' is not defined
,. Sudah mencobafrom scipy import*
, juga tidak berhasil.from scipy import sum, misc as m
? Anda menghemat saat Anda menggunakan jumlah juga, lalu.R, 90 byte
Path ke file PNG dibaca dari STDIN. Paket
png
perlu diinstal.Selangkah demi selangkah:
sumber
C, 259 Bytes
Mengambil file PPM tanpa komentar .
Proses
Kode awal:
Potong variabel dan hapus loop:
Dari sana saya menggabungkan berbagai pernyataan menjadi satu pernyataan pengembalian. Dihapus dan info jenis asing lainnya, variabel berubah nama, dan memotong spasi.
sumber
Cobra - 371
sumber
Java,
449447446430426 byteTerima kasih atas jawaban ini pada stack overflow untuk
String.format
triknya.sumber