这是我尝试改善图像色彩的功能。它可以工作,但是真的很慢...也许有人有更好的主意?

static Mat correctColor(Mat AImage) {
    Mat copyImage;
    AImage.copyTo(copyImage);
    Mat imgLab;
    cvtColor(copyImage, imgLab, CV_BGR2Lab);


    for (int y = 0; y < imgLab.rows; y++) {
        for (int x = 0; x < imgLab.cols; x++) {
            //get pixel value
            imgLab.ptr<uchar > (y)[x * 3] = imgLab.ptr<uchar > (y)[x * 3]*0.3;
        }
    }
    cvtColor(imgLab, copyImage, CV_Lab2BGR);

    Mat img(copyImage.rows, copyImage.cols, CV_32FC3);
    copyImage.convertTo(img, CV_32FC3, 1 / 255.);
    blur(img, img, Size(255, 255));
    Mat img32(copyImage.rows, copyImage.cols, CV_32FC3);
    copyImage.convertTo(img32, CV_32FC3, 1 / 255.);

    img.mul(img, 2);
    divide(img32, img, img);

    img.convertTo(copyImage, CV_8U, 255.0);

    return copyImage;
 }

最佳答案

首先,您应该通过引用传递参数,因为您已经在代码中创建了一个克隆。

关于c++ - Opencv慢速代码:有什么问题吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10481855/

10-11 18:37