gpt4 book ai didi

c++ - Opencv慢代码: Is something wrong?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:28 25 4
gpt4 key购买 nike

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

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;
}

最佳答案

主要问题是您正在内存中创建原始图像的多个拷贝:AImage、copyImage、imgLab、img、img32。

第一个优化应该是@Eric 建议的(通过引用):

static Mat correctColor(Mat& AImage) {

至于您的其余代码,看看您是否可以减少使用的拷贝数。

OpenCV 有一个 GPU 模块,它在 GPU 中实现了几个函数,包括 cv::blur()。此实现基于 CUDA 框架,因此如果您的显卡是 NVIDIA,那么您很幸运:gpu::blur() .

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com