【问题标题】:Optimization Help in OpenCV / C++OpenCV / C++ 中的优化帮助
【发布时间】:2011-10-20 20:23:32
【问题描述】:

我正在使用 OpenCV / Qt 创建一个简单的图像处理应用程序,并且我正在寻找一种方法来优化我创建的代码 (https://github.com/krslynx/ImageProcessingApplication)。目前,每次在应用程序中移动滑块时,都会调用相应的方法来更改图像,例如:

/** 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());
}

updateImage 方法更新存储图像的 QLabel (ui->pixmap)。这会带来一个问题,因为cv::Mat image / this->image 是在每个 ActionEvent 中调用的原始图像,因此如果移动亮度滑块,然后移动对比度滑块,亮度变化将不会持续,因为滑块取决于 @987654324 @ 而不是设置的 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++ 还很陌生!

【问题讨论】:

    标签: c++ qt opencv


    【解决方案1】:

    创建一个单独的函数,根据滑块的值更新图像。例如有这样的功能

    void MainWiondow::generic_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);
    }
    

    您可以将每个滑块的动作事件设置为该函数。如果某些滑块需要更多功能,那么您可以创建一个不同的动作事件函数来调用该函数,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2011-05-06
      • 2011-03-01
      • 1970-01-01
      相关资源
      最近更新 更多