पाइथन का उपयोग करके झूठी/छद्म-रंग छवियों को बनाने का एक तरीका यहां है, सी ++ में रूपांतरण बहुत सरल होना चाहिए। अवलोकन:
- ग्रेस्केल के रूप में अपनी छवि को खोलें, और आरजीबी
- एचएसवी (रंग, संतृप्तता, मूल्य/चमक) रंग अंतरिक्ष में कनवर्ट आरजीबी छवि। यह एक बेलनाकार अंतरिक्ष है, ध्रुवीय अक्ष पर एक ही मूल्य द्वारा प्रतिनिधित्व रंग के साथ।
- ग्रेस्केल छवि को ह्यू चैनल सेट करें जिसे हमने पहले ही खोला है, यह एक महत्वपूर्ण कदम है।
- मूल्य मान, और संतृप्ति चैनल दोनों अधिकतम मूल्यों पर सेट करें।
- वापस आरजीबी स्पेस में कनवर्ट करें (अन्यथा डिस्प्ले गलत होगा)।
कैच हालांकि के एक जोड़े हैं ...
- ह्यू के रूप में डिग्री में आयोजित किया जाता है और रंग स्पेक्ट्रम से प्रतिनिधित्व किया है 0 180 (नहीं 0-256 और नहीं 0-360 (कभी-कभी मामला)), हमें
180/256.0
- द्वारा गुणा करके ग्रेस्केल छवि को उचित रूप से पुन: सहेजने की आवश्यकता है ओपनसीवी मामले में रंग रंगीन रंग नीले रंग में शुरू होता है (लाल नहीं, आपकी छवि में)। अर्थात। मानचित्रण इस प्रकार है:
से:
रहे हैं: ![enter image description here](https://i.stack.imgur.com/GJThj.jpg)
यदि यह बदलने के लिए हम सभी रंग तत्वों offsetting और लपेटकर उनके आसपास 180 (अन्यथा यह परिपूर्ण होगा) करके कर सकते हैं महत्वपूर्ण है। कोड इस कट ऑफ पॉइंट पर छवि को मास्क करके और फिर उचित रूप से ऑफसेट करके करता है।
लिए:
से
: का उपयोग कर एक 120 की भरपाई के लिए, अपने colorscale उत्पन्न ![enter image description here](https://i.stack.imgur.com/RX10o.jpg)
और छवि संसाधित इस तरह से बहुत अच्छी तरह से (अंत में) तुम्हारा मैच के लिए लगता है।
import cv
image_bw = cv.LoadImage("TfBmw.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
image_rgb = cv.LoadImage("TfBmw.jpg")
#create the image arrays we require for the processing
hue=cv.CreateImage((image_rgb.width,image_rgb.height), cv.IPL_DEPTH_8U, 1)
sat=cv.CreateImage((image_rgb.width,image_rgb.height), cv.IPL_DEPTH_8U, 1)
val=cv.CreateImage((image_rgb.width,image_rgb.height), cv.IPL_DEPTH_8U, 1)
mask_1=cv.CreateImage((image_rgb.width,image_rgb.height), cv.IPL_DEPTH_8U, 1)
mask_2=cv.CreateImage((image_rgb.width,image_rgb.height), cv.IPL_DEPTH_8U, 1)
#convert to cylindrical HSV color space
cv.CvtColor(image_rgb,image_rgb,cv.CV_RGB2HSV)
#split image into component channels
cv.Split(image_rgb,hue,sat,val,None)
#rescale image_bw to degrees
cv.ConvertScale(image_bw, image_bw, 180/256.0)
#set the hue channel to the greyscale image
cv.Copy(image_bw,hue)
#set sat and val to maximum
cv.Set(sat, 255)
cv.Set(val, 255)
#adjust the pseudo color scaling offset, 120 matches the image you displayed
offset=120
cv.CmpS(hue,180-offset, mask_1, cv.CV_CMP_GE)
cv.CmpS(hue,180-offset, mask_2, cv.CV_CMP_LT)
cv.AddS(hue,offset-180,hue,mask_1)
cv.AddS(hue,offset,hue,mask_2)
#merge the channels back
cv.Merge(hue,sat,val,None,image_rgb)
#convert back to RGB color space, for correct display
cv.CvtColor(image_rgb,image_rgb,cv.CV_HSV2RGB)
cv.ShowImage('image', image_rgb)
# cv.SaveImage('TfBmw_120.jpg',image_rgb)
cv.WaitKey(0)
आपकी छवि offset = 120
के साथ कार्रवाई की:
![enter image description here](https://i.stack.imgur.com/IIGPh.jpg)
खैर के बाद विमान, कुछ पता नहीं ओपनसीवी के बारे में, लेकिन प्रक्रिया को दो हिस्सों में विभाजित किया गया है, आरजीबी से ग्रेस्केल तक, और फिर उस ग्रेडिएंट का उपयोग करके ग्रेस्केल वापस आरजीबी तक। पहले भाग के लिए [यहां] (http://nashruddin.com/opencv-examples-for-operation-on-images.html/5) देखें, और [यहां] (http://stackoverflow.com/questions/6686868/opencv-color-mapping-with-direct-pixel-access) दूसरे के लिए। – scientiaesthete