2012-01-28 13 views
7

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

+0

आप cvtColor() फ़ंक्शन पर एक नज़र रखना चाहते हैं? http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html#cvtColor –

उत्तर

0

http://kemppro.blogspot.com/2014/05/splitting-image-in-to-three-channels.html पर परीक्षण किया गया तुम वहाँ से जवाब मिल सकता है

+1

लिंक-केवल उत्तर रखने से बचने का प्रयास करें। देखें कि क्या आप लिंक से सबसे प्रासंगिक जानकारी को पारदर्शी कर सकते हैं – StephenTG

2

जहाँ तक मुझे के लिए एक कॉल पता है,

cvtColor(src, bwsrc, CV_RGB2GRAY); 

कि कर सकते हैं, जहां src मल्टी चैनल स्रोत छवि और तीसरे पैरामीटर है गंतव्य में चैनलों की संख्या का प्रतिनिधित्व करता है। तो, आप इसे ओपनसीवी में कर सकते हैं और अपने क्यूटी इंटरफ़ेस पर छवि प्रदर्शित कर सकते हैं।

दूसरी ओर, आप उचित विभाजन() विधि का उपयोग कर चैनलों को अलग एकल चैनल सरणी में विभाजित कर सकते हैं।

http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html#split

10

मुझे लगता है कि cvSplit आप (docs) जो खोज रहे हैं है। आप आर, जी, और बी में आरजीबी विभाजित करने के लिए उपयोग कर सकते हैं, उदाहरण के लिए,:

/* assuming src is your source image */ 
CvSize s = cvSize(src->width, src->height); 
int d = src->depth; 
IplImage* R = cvCreateImage(s, d, 1); 
IplImage* G = cvCreateImage(s, d, 1); 
IplImage* B = cvCreateImage(s, d, 1); 
cvSplit(src, R, G, B, null); 

नोट आप आदेश देने के बारे में सावधान रहने की आवश्यकता होगी; सुनिश्चित करें कि मूल छवि वास्तव में आर, जी, बी के रूप में आदेश दिया गया है (यह एक सभ्य मौका है कि यह बी, जी, आर) है।

+0

यह संभवतः प्रश्नकर्ता की खोज की गई है। – kiltek

7

चूंकि इसे टैग किया गया है qt मैं एक सी ++ उत्तर दूंगा।

// Create Windows 
    namedWindow("Red",1); 
    namedWindow("Green",1); 
    namedWindow("Blue",1); 

    // Create Matrices (make sure there is an image in input!) 
    Mat input; 
    Mat channel[3]; 

    // The actual splitting. 
    split(input, channel); 

    // Display 
    imshow("Blue", channel[0]); 
    imshow("Green", channel[1]); 
    imshow("Red", channel[2]); 

OpenCV 2.4.5