2011-10-20 16 views
0

OpenCV/Qtを使用して簡単な画像処理アプリケーションを作成しています。作成したコード(https://github.com/krslynx/ImageProcessingApplication)を最適化する方法を探しています。現在、各タイムスライダは、例えば、画像を変更し、それぞれのメソッドが呼び出されるアプリケーションに移動される。updateImage方法は、画像を格納するQLabel(ui->pixmap)を更新OpenCV/C++の最適化ヘルプ

/** ActionEvent for the brightness slider moving */ 
void MainWindow::on_brightnessSlider_sliderMoved() { 
          //setBrightness is the method called 
    updateImage(ui->pixmap, setBrightness(this->image, ui->brightnessSlider->value()); 
} 

。これは、cv::Mat image/this->imageが各ActionEventで呼び出される生のイメージであるため、Brightness Sliderが移動された後、Contrast Sliderが移動された場合、スライダがthis->imageではなくQLabel pixmapを設定します。このコードは、私は必要な正確な視覚効果を与えるが、それは各アクションのイベントは、その中に上記のコードのすべてを持っている必要があることを意味(と私が必要

/** ActionEvent for the brightness slider moving */ 
void MainWindow::on_brightnessSlider_sliderMoved() { 

    cv::Mat result = this->image; 

    result = setBrightness(result, ui->brightnessSlider->value()); 
    result = setContrast(result, ui->contrastSlider->value()); 
    result = setSharpness(result, ui->sharpnessSlider->value()); 
    result = setZoom(result, ui->zoomSlider->value()); 

    updateImage(ui->pixmap, result); 
} 

:私は、次のコードを使用してこの問題を「解決します」私が追加するそれぞれの新機能のコードを追加し続ける)、私は既に処理したことを再処理しています。すべてのスライダを移動させた大きな画像を処理する場合、処理に1.1秒以上かかることがあります。

代わりにグローバルイメージthis->imageを参照して変更しようとしましたが、変更されたイメージの別のグローバルを作成しましたが、明るさ/コントラスト/シャープネス/ズームスライダを上下に動かすと問題が発生しましたはるかに激しく

どのポインタも大変ありがとうございます。私はC++にかなり新しいです!

答えて

2

スライダの値に基づいてイメージを更新する別の機能を作成します。たとえば、次のような関数を持つことができます。

この機能には、各スライダのアクションイベントを設定できます。いくつかのスライダにこれ以上の機能が必要な場合は、次のような関数を呼び出す別のアクションイベント関数を作成できます。

/** ActionEvent for the brightness slider moving */ 
void MainWindow::on_brightnessSlider_sliderMoved() { 
    /* brightness slider specific code */ 

    generic_sliderMoved(); 
}