我已经被困在这几天了,也许有人能在这里帮助我。
我正在使用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)
,模糊这个新图像,然后将其裁剪回原始图像的大小,那么事情似乎有效,但我仍然无法弄清楚为什么我的第一次尝试没有不行。
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
你不能这样做。所有函数都不接受BORDER_WRAP
- 它仅对其中一些函数有效,并且由于断言失败确认,cv::blur
不是其中之一..
但是,正如您已经发现的那样,您可以先使用cv::copyMakeBorder
,模糊此新图像并将其裁剪回原始尺寸。