OpenCV边框模式问题与模糊过滤器

时间:2016-02-17 10:41:26

标签: c++ opencv

我已经被困在这几天了,也许有人能在这里帮助我。

我正在使用OpenCV C ++ API执行一些基本的图像处理。我有一个步骤,我想模糊我的图像并指定BORDER_WRAP作为我的边框类型:

cv::blur(img, img, cv::Size(3, 3), cv::Point(-1, -1), cv::BORDER_WRAP);

但是在执行我的代码时,我收到以下错误:

  

OpenCV错误:断言失败(columnBorderType!= BORDER_WRAP)

但是,当我使用其他边框类型(例如BORDER_REFLECT)时,一切正常,但我需要BORDER_WRAP

如果我首先在我的图像上使用copyMakeBorder(img, img, 1, 1, 1, 1, cv::BORDER_WRAP),模糊这个新图像,然后将其裁剪回原始图像的大小,那么事情似乎有效,但我仍然无法弄清楚为什么我的第一次尝试没有不行。

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你不能这样做。所有函数都不接受BORDER_WRAP - 它仅对其中一些函数有效,并且由于断言失败确认,cv::blur不是其中之一..

但是,正如您已经发现的那样,您可以先使用cv::copyMakeBorder,模糊此新图像并将其裁剪回原始尺寸。