Hallo zusammen,
ich habe ein jpg eingelesen und möchte nun für die RGB-Werte ein int-Wert erhalten.
Mein Problem liegt darin, dass ich nicht weiß, wie ich an die 3 RGB-Werte eines Bildes rankommen kann.
Arbeite mit Visul Studio 6 und OpenCV. Es soll eine kleine mfc werden.
Suche eine Funktion, ähnlich der "cvGetSize()", die ich bereits angewendet habe und mir die Größe des Bildes ausliest.
Hier mal bereits meine funktionierenden Funktionen:
Vielen Dank schon mal im vorraus...
Gruß,
Flo
ich habe ein jpg eingelesen und möchte nun für die RGB-Werte ein int-Wert erhalten.
Mein Problem liegt darin, dass ich nicht weiß, wie ich an die 3 RGB-Werte eines Bildes rankommen kann.
Arbeite mit Visul Studio 6 und OpenCV. Es soll eine kleine mfc werden.
Suche eine Funktion, ähnlich der "cvGetSize()", die ich bereits angewendet habe und mir die Größe des Bildes ausliest.
Hier mal bereits meine funktionierenden Funktionen:
Code:
void CProjektDlg::OnBtnOpen() // Bild öffnen und Größe auslesen
{
CFileDialog fd(TRUE);
CvSize size;
if( fd.DoModal() == IDOK )
{
m_path = fd.GetPathName();
UpdateData(FALSE);
image = cvLoadImage((const char*)m_path, 1);
if(image)
{
cvNamedWindow("KAT",0);
cvShowImage("KAT",image);
size = cvGetSize( image ); // Größe des eigelesenen Bildes bestimmen
m_width = size.width; // Wert der Breite der Variable zuweisen
m_height = size.height; // Wert der Höhe der Variable zuweisen
UpdateData(FALSE);
}
else MessageBox("Bild konnte nicht geladen werden!");
}
}
void CProjektDlg::OnBtnSub() // Verdunkeln
{
IplImage *grey = NULL;
CvSize size;
if(image)
{
grey = cvCloneImage(image); // Bild geklont
if(grey)
{
size = cvGetSize(grey); // Größe geklonten Bildes einlesen
cvRectangle(grey, cvPoint(0,0), cvPoint(size.width,size.height), CV_RGB(10,10,10), -1); // Graubild mit der Größe des Originals erzeugen
cvmSub(image, grey, image); // Graubild vom Original abziehen und im Original speichern
cvShowImage("KAT", image);
cvReleaseImage(&grey);
}
else MessageBox("Fehler beim clonen!");
}
else MessageBox("Kein Bild geladen!");
}
void CProjektDlg::OnBtnInvert() // Negativ erzeugen
{
IplImage *grey = NULL;
CvSize size;
if(image)
{
grey = cvCloneImage(image);
if(grey)
{
size = cvGetSize(grey); // Größe des geklonten Bildes einlesen
cvRectangle(grey, cvPoint(0,0), cvPoint(size.width,size.height), CV_RGB(255,255,255), -1);
cvmSub(grey, image, image); // Original vom Weißbild abziehen und im Original speichern
cvShowImage("KAT", image);
cvReleaseImage(&grey);
}
else MessageBox("Fehler beim clonen!");
}
else MessageBox("Kein Bild geladen!");
}
void CProjektDlg::OnBtnRgb() // RGB-Werte auslesen und als int-Wert ablegen
{
IplImage *img = NULL;
CvSize size;
int rgb;
if(image)
{
// Was muss ich hier machen?
}
else MessageBox("Kein Bild geladen!");
}
Vielen Dank schon mal im vorraus...
Gruß,
Flo