เขียนโปรแกรมที่ใช้ภาพtruecolorมาตรฐานและสีRGB 24 บิตเดียว(สามตัวเลขจาก 0 ถึง 255) ปรับเปลี่ยนภาพอินพุต (หรือเอาท์พุทของภาพใหม่ที่มีขนาดเท่ากัน) เพื่อให้สีเฉลี่ยนั้นเป็นสีเดียวที่ป้อนเข้า คุณอาจจะปรับเปลี่ยนพิกเซลในภาพที่นำเข้าในแบบที่คุณต้องการเพื่อให้บรรลุนี้ใด ๆแต่เป้าหมายคือการทำให้การเปลี่ยนสีเป็นที่สังเกตสายตาที่เป็นไปได้
สีเฉลี่ยของภาพ RGB มันชุดของสามมัชฌิมเลขคณิตหนึ่งสำหรับแต่ละช่องสี ค่าเฉลี่ยสีแดงคือผลรวมของค่าสีแดงในทุกพิกเซลในภาพหารด้วยจำนวนพิกเซลทั้งหมด (พื้นที่ภาพ) ปัดลงเป็นจำนวนเต็มที่ใกล้ที่สุด ค่าเฉลี่ยสีเขียวและสีน้ำเงินถูกคำนวณในลักษณะเดียวกัน
นี้งูหลาม 2 (กับPIL ) สคริปต์สามารถคำนวณค่าเฉลี่ยของสีมากที่สุดรูปแบบไฟล์ภาพ:
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)
(มีโปรแกรมสีเฉลี่ยที่คล้ายกันที่นี่แต่ไม่จำเป็นต้องทำการคำนวณเดียวกันทั้งหมด)
ข้อกำหนดหลักสำหรับโปรแกรมของคุณคือสำหรับภาพที่เข้ามาใด ๆสีเฉลี่ยของผลลัพธ์ที่สอดคล้องกันนั้นจะต้องตรงกับสีที่ได้รับการป้อนเข้า - ตามที่ตัดสินโดยตัวอย่างของ Python หรือรหัสที่เทียบเท่า ภาพที่ส่งออกจะต้องมีขนาดที่แน่นอนเหมือนกับภาพที่ป้อน
เพื่อให้คุณได้ในทางเทคนิคสามารถส่งโปรแกรมที่เพียงแค่สีอินพุตทั้งสีเฉลี่ยระบุ (เพราะค่าเฉลี่ยมักจะเป็นสีที่) แต่นี่คือการประกวดความนิยม - ส่งที่มีคะแนนเสียงสูงสุดจะเป็นผู้ชนะและเช่นจิ๊บจ๊อย การส่งจะไม่ได้รับ upvotes มากมาย ความคิดใหม่ ๆ เช่นการใช้ประโยชน์จากนิสัยใจคอในสายตามนุษย์หรือทำให้ภาพหดตัวลงและวาดเส้นขอบสีรอบ ๆ ภาพ (หวังว่า) คุณจะได้รับการโหวต
โปรดทราบว่าการผสมสีและรูปภาพโดยเฉลี่ยทำให้จำเป็นต้องมีการเปลี่ยนสีอย่างเห็นได้ชัด ตัวอย่างเช่นหากสีเฉลี่ยเพื่อจับคู่เป็นสีดำ (0, 0, 0) ภาพอินพุตใด ๆจะต้องทำให้เป็นสีดำสนิทเพราะหากพิกเซลใด ๆ มีค่าที่ไม่เป็นศูนย์พวกเขาก็จะทำให้ค่าเฉลี่ยไม่เป็นศูนย์ด้วย จํากัดการปัดเศษผิดพลาด) เก็บข้อ จำกัด ไว้ในใจเมื่อลงคะแนน
ทดสอบภาพ
ภาพบางภาพและสีเริ่มต้นเฉลี่ยที่จะเล่นด้วย คลิกเพื่อดูขนาดเต็ม
A.เฉลี่ย (127, 127, 127)
จากfejesjocoของภาพที่มีทุกสี คำตอบ พบต้นฉบับในบล็อกของเขา
B.โดยเฉลี่ย (62, 71, 73)
C.เฉลี่ย (115, 112, 111)
D.เฉลี่ย (154, 151, 154)
Escher ของน้ำตก เป็นต้นฉบับ
E.เฉลี่ย (105, 103, 102)
mount Shasta จัดหาให้โดยฉัน
F.โดยเฉลี่ย (75, 91, 110)
หมายเหตุ
- รูปแบบอินพุตและเอาต์พุตที่แน่นอนและประเภทไฟล์รูปภาพที่โปรแกรมของคุณใช้นั้นมีความสำคัญมาก เพียงให้แน่ใจว่ามีความชัดเจนในการใช้โปรแกรมของคุณ
- มันอาจเป็นความคิดที่ดี (แต่ไม่ใช่ความต้องการด้านเทคนิค) ว่าหากภาพมีสีเฉลี่ยเป้าหมายอยู่แล้วควรส่งออกตามที่เป็นอยู่
- โปรดโพสต์ภาพทดสอบที่มีอินพุตสีเฉลี่ยเป็น (150, 100, 100) หรือ (75, 91, 110) ดังนั้นผู้ลงคะแนนสามารถเห็นอินพุตเดียวกันในโซลูชันที่แตกต่างกัน (การโพสต์ตัวอย่างเพิ่มเติมนอกเหนือจากนี้เป็นสิ่งที่ดีแม้สนับสนุน)