2012-04-04 3 views

Antwort

1

Zunächst einmal müssen Sie die Grundlagen der OpenCV gehen und richten Sie Ihre Aufmerksamkeit auf andere Teile der Bildverarbeitung. Was Sie fragen, ist ziemlich einfach, und vorausgesetzt, Sie werden mit OpenCV 2.1 und höher werden,

cv::Mat img = Read the image off the disk or do something to fill the image. 

Um die RGB-Werte

Zugriff
img.at<cv::Vec3b>(x,y); 

Aber würden die Werte in umgekehrter Richtung geben, die BGR ist. Achte also darauf, dass du das notierst. Grundsätzlich ein cv :: Vec3b-Typ, auf den zugegriffen wird.

img.at<cv::Vec3b>(x,y)[0];//B 
img.at<cv::Vec3b>(x,y)[1];//G 
img.at<cv::Vec3b>(x,y)[2];//R 

oder

Vec3f pixel = img.at<Vec3f>(x, y); 

int b = pixel[0]; 
int g = pixel[1]; 
int r = pixel[2]; 

Jetzt auf das Bild in RGB-Kanäle aufteilen Sie folgende

nun auf primitive C Stil von OpenCV verwenden können (Es C und C++ Stil unterstützt) Sie kann die cvSplit Funktion verwenden

IplImage* rgb = cvLoatImage("C://MyImage.bmp"); 

//now create three single channel images for the channel separation 
IplImage* r = cvCreateImage(cvGetSize(rgb), rgb->depth,1); 
IplImage* g = cvCreateImage(cvGetSize(rgb), rgb->depth,1); 
IplImage* b = cvCreateImage(cvGetSize(rgb), rgb->depth,1); 

cvSplit(rgb,b,g,r,NULL); 

OpenCV 2 CookBook Ist eines der besten Bücher über OpenCV. Wird dir viel helfen.

Verwandte Themen