2 Stimmen

Es können nicht alle Pixel einer rechteckigen Bildmatrix durchlaufen werden

Ich versuche, die Helligkeit des geladenen Bildes zu erhöhen img Um die Pixel zu durchlaufen, verwende ich jedoch eine kleinere Matrix [die ich später für die Anwendung der Gaußschen Unschärfe verwenden werde]. Hier ist meine Funktion:

void Dobright(cv::Mat &in,IplImage * img)
{   
    uchar* temp_ptr ;
    for( int row = 0; row < in.rows; row++) 
    {
            for ( int col = 0; col < in.cols; col++) 
            {
                CvPoint pt = {row,col};
                temp_ptr  = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
                temp_ptr[0] += 100;
                temp_ptr[1] += 100;
                temp_ptr[2] += 100;
            }
    }
}

Wenn das Originalbild jedoch war:

enter image description here

Ich erhalte das aufgehellte Bild als:

enter image description here

Wie Sie sehen können, sind einige Teile heller als die anderen und da Zeilen und Spalten nicht gleich sind, wird nicht auf die Pixel des gesamten Bildes zugegriffen. Wie kann man dieses Problem lösen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X