मुझे नहीं लगता कि आप अपनी औसत रंग सीधे के लिए एक RMagick छवि पूछ सकते हैं, लेकिन ऐसी बात कंप्यूटिंग कि मुश्किल नहीं है।
मुझे लगता है कि color histogram निकालने का सबसे आसान तरीका होगा और फिर अपने औसत की गणना करने के लिए इसका उपयोग करें। आप शायद छवि पहले quantize हालांकि, रंग का एक बहुत के साथ एक छवि के लिए हिस्टोग्राम कंप्यूटिंग चाहते हैं सस्ते और शायद व्यर्थ व्यस्त काम करता है, तो आप सिर्फ एक औसत में रुचि रखते हैं नहीं है:
total = 0
avg = { :r => 0.0, :g => 0.0, :b => 0.0 }
img.quantize.color_histogram.each { |c, n|
avg[:r] += n * c.red
avg[:g] += n * c.green
avg[:b] += n * c.blue
total += n
}
[:r, :g, :b].each { |comp| avg[comp] /= total }
दैट ' आपको avg
में औसत रंग देगा। लेकिन, रंग ImageMagick के आंतरिक प्रारूप में होगा (यानी घटकों शून्य से Magick::QuantumRange
तक होती है जाएगा) ताकि आप उन्हें 0-255 के लिए नीचे पैमाने पर करने होंगे:
[:r, :g, :b].each { |comp| avg[comp] = (avg[comp]/Magick::QuantumRange * 255).to_i }
और अंत में आप में आरजीबी घटक शून्य और 255 के बीच पूर्णांक के रूप में avg
और हेक्स प्रारूप में औसत रंग प्राप्त करना तुच्छ होना चाहिए। वांछित अगर आप इसे आसानी से औसत चरण में विलय कर सकते हैं।
मैं शायद इटरेटर के साथ चतुर हो सकता हूं लेकिन .each
चतुरता से अच्छा और स्पष्ट और स्पष्टता अधिक महत्वपूर्ण है।
आप क्वांटिज़ेशन चरण के साथ और उसके बिना भी कोशिश कर सकते हैं और जिन भी छवियों के साथ आप काम कर रहे हैं उनके लिए सबसे अच्छा काम कर सकते हैं।
स्रोत
2011-03-02 04:21:46
जैसा कि मैंने जावास्क्रिप्ट का उपयोग करके आपके [संबंधित प्रश्न] पर पूछा है (http://stackoverflow.com/questions/ 5162828/कैसे-औसत-से-औसत-या-मुख्य-रंग-से-एक-छवि-के-जावास्क्रिप्ट के साथ): "क्या आप केवल सटीक पिक्सेल रंग चाहते हैं, या किसी विशेष एचएसवी रेंज के भीतर? (मैं चाहता था सुझाव देते हैं कि उत्तरार्द्ध आपको बेहतर सेवा देगा।) " – Phrogz