2013-03-15 5 views
6

मैं आरजीबी रंग मानों को एचएलएस में परिवर्तित करने के लिए पाइथन की रंगीन लाइब्रेरी का उपयोग कर रहा हूं। बस सत्यापित करने के लिए, मैंने वापस आरजीबी में परिवर्तित करने की कोशिश की और एक अलग मूल्य वापस मिला। मैं परिशुद्धता के मुद्दों के कारण मामूली मतभेदों को समझ सकता हूं, लेकिन ये मान काफी अलग हैं।आरजीबी से एचएलएस में कनवर्ट करना और पीछे

यहाँ मेरी कोड है:

import colorsys 
r=192 
g=64 
b=1 

hlsval = colorsys.rgb_to_hls(r,g,b) 
rgbval=colorsys.hls_to_rgb(hlsval[0],hlsval[1],hlsval[2]) 

print hlsval, rgbval 

आउटपुट:

(0.16666666666666666, 96.5, -1.0) (191.99999999999994, 192.0, 1.0) 

हरी मूल्य 200 से अधिक%

मैं कुछ अन्य मूल्यों की कोशिश की, और हर बार से बंद है घटकों में से एक एक महत्वपूर्ण राशि से बंद है। क्या मैं कुछ भूल रहा हूँ?

+1

मूल्यों ? –

+2

@ अश्विनी चौधरी: यह बहुत स्पष्ट है कि उसे कहीं भी 'ए, बी, सी = आर, जी, बी' के बराबर मिला है (या वह सिर्फ 'आर, जी, बी' का उपयोग करने के लिए अपने कोड को संपादित करना नहीं भूल गया था 'ए, बी, सी' या कुछ), क्योंकि वे वास्तव में वे मान हैं जिन्हें आप 'ए, बी, सी = 1 9 2, 64, 1' के साथ प्राप्त करते हैं। – abarnert

+0

हाँ, इसके बारे में खेद है। मैंने इसे अभी सुधार लिया है। – user2175594

उत्तर

15

आपके मूल्य रंगस्थान की सीमाओं के बाहर, रास्ते हैं।

the docs से:

निर्देशांक इन रंग रिक्त स्थान के सभी में अंक मान तैर रहे हैं। वाईआईक्यू स्पेस में, वाई समन्वय 0 और 1 के बीच है, लेकिन I और Q निर्देशांक सकारात्मक या नकारात्मक हो सकते हैं। अन्य सभी रिक्त स्थानों में, निर्देशांक 0 और 1.

मुझे अनुमान है कि आप उन्हें 0 और 255 के बीच बाइट मान होने की उम्मीद कर रहे हैं? बस 255 पहले से विभाजित:

r, g, b = 192, 64, 1 
r, g, b = [x/255.0 for x in r, g, b] 
h, l, s = colorsys.rgb_to_hls(r, g, b) 
r, g, b = colorsys.hls_to_rgb(h, l, s) 
r, g, b = [x*255.0 for x in r, g, b] 
print r, g, b 

यह आपको दे देंगे:

192.0 64.0 1.0 

आप को समझने के लिए कारण है कि आप इस तरह के हास्यास्पद त्रुटियों मिलता है जब आप colorspace के सीमा के बाहर रास्ता तय करना चाहते हैं।

अच्छी तरह से, दस्तावेज़ों से जुड़े दो दस्तावेज़ों को समझने के लिए, रंगों के बाहर के मूल्य अर्थहीन क्यों हैं, और आप इसे असंभव बाधाओं के मूल्यों को उत्पन्न करने के लिए क्यों कह रहे हैं। फिर, यह पता लगाने के लिए कि यह किसी अन्य तरीके के बजाय जिस तरह से विफल रहता है, आपको यह जानने की ज़रूरत है कि यह किस एल्गोरिदम का उपयोग कर रहा है-जो कि बहुत आसान है, क्योंकि डॉक्स स्रोत कोड से लिंक करते हैं, जो शुद्ध पायथन और बहुत पठनीय है ।

(पी एस, मैं कल्पना कर सकते हैं क्या 9650% हल्कापन कैसा लग सकता है, लेकिन मैं -100% संतृप्ति के बारे में उत्सुक हूँ। शायद कुछ Lovecraftian।) `A`,` b` और `c` की

संबंधित मुद्दे