Viết chương trình lấy hình ảnh truecolor tiêu chuẩn và màu RGB 24 bit duy nhất (ba số từ 0 đến 255). Sửa đổi hình ảnh đầu vào (hoặc xuất hình ảnh mới có cùng kích thước) sao cho màu trung bình của nó chính xác là màu duy nhất được nhập. Bạn có thể sửa đổi các pixel trong hình ảnh đầu vào theo bất kỳ cách nào bạn muốn để đạt được điều này, nhưng mục tiêu là làm cho màu sắc thay đổi một cách trực quan không thể nhận thấy nhất có thể .
Các màu trung bình của một hình ảnh RGB thực sự là một tập hợp của ba phương tiện số học , một cho mỗi kênh màu. Giá trị đỏ trung bình là tổng của các giá trị đỏ trên tất cả các pixel trong ảnh chia cho tổng số pixel (vùng hình ảnh), được làm tròn xuống số nguyên gần nhất. Trung bình màu xanh lá cây và màu xanh được tính theo cùng một cách.
Đây Python 2 (với PIL script) có thể tính toán màu trung bình của hầu hết các định dạng file ảnh:
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)
(Có các chương trình màu trung bình tương tự ở đây , nhưng chúng không nhất thiết phải thực hiện cùng một phép tính.)
Yêu cầu chính cho chương trình của bạn là đối với bất kỳ hình ảnh đầu vào nào , màu trung bình của đầu ra tương ứng của nó phải khớp chính xác với màu đã nhập - như được đánh giá bởi đoạn mã Python hoặc một số mã tương đương. Hình ảnh đầu ra cũng phải có cùng kích thước với hình ảnh đầu vào.
Vì vậy, về mặt kỹ thuật, bạn có thể gửi một chương trình chỉ đơn giản là tô màu toàn bộ màu trung bình được chỉ định (vì trung bình sẽ luôn là màu đó), nhưng đây là một cuộc thi phổ biến - bài gửi có số phiếu bầu cao nhất sẽ giành chiến thắng và tầm thường như vậy trình sẽ không giúp bạn có nhiều upvote. Những ý tưởng mới lạ như tận dụng lợi thế của sự kỳ quặc trong tầm nhìn của con người, hoặc thu nhỏ hình ảnh xuống và vẽ một đường viền màu xung quanh nó (hy vọng) sẽ giúp bạn bỏ phiếu.
Lưu ý rằng sự kết hợp nhất định của màu trung bình và hình ảnh đòi hỏi phải thay đổi màu sắc cực kỳ đáng chú ý. Ví dụ: nếu màu trung bình phù hợp là màu đen (0, 0, 0), thì bất kỳ hình ảnh đầu vào nào cũng cần phải được tạo thành màu đen hoàn toàn bởi vì nếu bất kỳ pixel nào có giá trị khác không, chúng cũng sẽ tạo ra giá trị trung bình khác không ( chặn lỗi làm tròn số). Giữ những hạn chế như vậy trong tâm trí khi bỏ phiếu.
Hình ảnh thử nghiệm
Một số hình ảnh và màu trung bình mặc định của chúng để chơi xung quanh. Nhấn vào đây để kích thước đầy đủ.
A. trung bình (127, 127, 127)
Từ hình ảnh của fejesjoco với tất cả các màu trả lời . Tìm thấy bản gốc trên blog của mình .
B. trung bình (62, 71, 73)
Yokohama . Được cung cấp bởi Geobits .
C. trung bình (115, 112, 111)
Tokyo . Được cung cấp bởi Geobits .
D. trung bình (154, 151, 154)
Thác nước Escher's . Bản gốc .
E. trung bình (105, 103, 102)
Núi Shasta . Cung cấp bởi tôi.
F. trung bình (75, 91, 110)
Ghi chú
- Các định dạng đầu vào và đầu ra chính xác và các loại tệp hình ảnh mà chương trình của bạn sử dụng không quan trọng lắm. Chỉ cần chắc chắn rằng nó rõ ràng làm thế nào để sử dụng chương trình của bạn.
- Có lẽ là một ý tưởng tốt (nhưng về mặt kỹ thuật không phải là một yêu cầu) rằng nếu một hình ảnh đã có màu trung bình của mục tiêu, thì nó phải là đầu ra.
- Vui lòng đăng hình ảnh thử nghiệm với đầu vào màu trung bình là (150, 100, 100) hoặc (75, 91, 110), để cử tri có thể thấy các đầu vào giống nhau trên các giải pháp khác nhau. (Đăng nhiều ví dụ hơn là tốt, thậm chí được khuyến khích.)