模糊滤镜的 OpenCV 边框模式问题

OpenCV border mode issue with blur filter

本文关键字:模式 问题 边框 OpenCV 滤镜 模糊      更新时间:2023-10-16

我已经在这个上面呆了几天了,也许有人能在这里帮助我。

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

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

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

OpenCV 错误:断言失败(列边框类型 != BORDER_WRAP(

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

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

有人知道我该如何解决这个问题吗?

你不能这样做。 并非所有函数都接受BORDER_WRAP - 它只对其中一些函数有效,并且正如断言失败所证实的那样,cv::blur不是其中之一。

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