Kontrast erhöhen

Alles rund um die Programmierung mit Qt
Antworten
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Kontrast erhöhen

Beitrag von abcmann74 »

Hi

Ich will ein mittels eines Schiebereglers den Kontrast ein Bildes erhöhen bzw. verkleinern.
Ich habe mir gedacht, dass ich aus dem bild jeden Pixel auslese und dann die helligkeit bzw. den kontrast manipuliere.

Ich habe dazu folgenen Code als Beispiel an einem Bild und einem 10x10 Pixel Ausschnitt geschrieben.

Code: Alles auswählen

void MainWindow::Load(void)
{
  Image_.~QImage();

  FilePath_ = QFileDialog::getOpenFileName(
    0,
    "Durchsuchen",
    "D:/esch/C++/Kantendetektion",
    "Images (*.*)",
    0,
    0);

  Image_ = QImage(FilePath_);

  if(Image_.isNull())
  { 
    return;
  }
  
  for (int y=0;y<10;y++)
  {
    for(int x=0;x<10;x++)
    {
      QRgb q = Image_.pixel(x,y);

      QColor qc ( q );
      qc.lighter(120);
        
      QRgb qnew = qRgb( qc.red(), qc.green(), qc.blue());

      Image_.setPixel( x, y, qnew  );
    } 
  }

  Scene_= new QGraphicsScene;

  Scene_->addPixmap(QPixmap::fromImage(Image_));

  View_= new QGraphicsView;
  View_->setScene(Scene_);

  View_->scale(0.4, 0.4);
  
  View_->show();
}
Das Problem ist, dass nicht passiert. Das heißt ich müsste ja eigentlich ein 10x10 großen Ausschnitt im bild heller gemacht haben. Ich kann aber leider nix auf dem ausgegebenen Bild Image_ erkennen.
Kann mir da vllt. jemand weiterhelfen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was issn das: Image_.~QImage(); ?

Außerdem skalierst du dein Bild auf 4x4 Pixel runter.
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Beitrag von abcmann74 »

hi upsala

mit dem destruktor zerstöre ich das alte bild weil ich nicht will das man mehrere Bilder laden kann.

am ende skaliere ich das bild um 40 % prozent runter, da es sonst zu groß für den bildschirm ist.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

abcmann74 hat geschrieben:mit dem destruktor zerstöre ich das alte bild weil ich nicht will das man mehrere Bilder laden kann.
Nie, wirklich nie(!) den Destruktor manuell aufrufen, außer du weißt GENAU was du da machst, und dass du es brauchst. Du produzierst da (vor allem wie du weiter machst) undefiniertes Verhalten!
Das was du damit bezwecken willst, macht ein paar Zeilen später doch dein Image_ = QImage(FilePath_);.
Besser wäre aber hier ein Image_.load(FilePath_); zu verwenden.
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Beitrag von abcmann74 »

ok danke für den tip. habe es direkt mal geändert.
hat jemand noch ne idee wie ich den kontrast des bildes anders ändern kann?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du verwirfst den Rückgabewert von lighter()
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Beitrag von abcmann74 »

danke upsala. jetzt funktioniert es.
Antworten