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

时间:2014-03-26 18:25:21

标签: c++ opencv filtering

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

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

问题

opencv是否在cv::GaussianBlur(.)cv::blur等功能内部管理此问题?为Matsrc参数提供相同dst的引用是否安全? 感谢

1 个答案:

答案 0 :(得分:5)

是的,如果你这样做会没有任何问题。我已经做了好几次了。 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);
}