c++, opencv:在过滤操作中对源和目标图像使用相同的Mat是否安全?

c++, opencv: Is it safe to use the same Mat for both source and destination images in filtering operation?

本文关键字:图像 安全 是否 Mat 目标 opencv 过滤 操作 c++      更新时间:2023-10-16

滤波操作涉及卷积,位置(x,y)的滤波值也取决于(x-a,y-b)a,b >0像素的强度。

因此,直接使用相同的图像作为目的地将导致意外的行为,因为在计算过程中,我使用一些已经过滤的数据而不是原始数据。

问题

opencv是否在cv::GaussianBlur(.), cv::blur等功能中内部管理此问题?对srcdst参数引用相同的Mat是否安全?由于

可以,这样做不会有任何问题。这种事我已经做过好几次了。openCV会自动处理的

我测试了下面的代码,它工作完美:

int main(int argc, char* argv[])
{
    Mat src;
    src = imread("myImage.jpeg", 1);
    imshow("src", src); //Original src
    cv::blur( src, src, Size(25,25) , Point(-1,-1), BORDER_DEFAULT );
    imshow("dst", src); //src after blurring
    waitKey(0);
}