首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用openCV模糊和BORDER_CONSTANT选项?

使用openCV模糊和BORDER_CONSTANT选项?
EN

Stack Overflow用户
提问于 2016-01-15 12:52:00
回答 2查看 3.3K关注 0票数 1

我试图创建一个模糊的功能,可以采取所有可能的填充选项。然而,对于BORDER_CONSTANT,您还需要提供颜色,即您想要填充您的图像的数字。在opencv的模糊文档中,我没有看到过多的函数模糊,需要填充和颜色值。有人知道如何克服这个问题吗?

我想做的一件事是先填充图像,然后模糊一些感兴趣的区域,完全没有填充,尽管我找不到方法去做。

刚才提到的问题是我提出的,所以基本上我会知道这个问题是否重复。这个问题与cv::blur有关,后者也处理填充,但是没有为BORDER_CONSTANT添加边框值的选项。我在问有没有人知道解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-18 18:29:26

基本上,我在最初的文章中所假设的是正确的。如果有人关心这个问题的解决方案:

代码语言:javascript
运行
复制
copyMakeBorder(image_in_mat, image_in_mat, r, r, r, r, BORDER_CONSTANT, Scalar(myNumbers));
ROI = Rect(r, r, w, h);
image_in_ROI = image_in_mat(ROI);
blur(image_in_ROI, image_out_mat, Size(blockSize, blockSize), Point(-1, -1));

其中r是你想要填充的半径;w,h是原始图像的宽度和高度;myNumbers --您希望填充的颜色;image_in_mat -输入图像。

票数 0
EN

Stack Overflow用户

发布于 2016-01-15 20:11:54

如果您遵循blur的源代码,您将发现,当borderTypeBORDER_CONSTANT时,边框的值将是Scalar(0,0,0,0)

只是一个快速的逆向工程.如果您创建一个白色(255个) CV_8UC1矩阵,并使用一个带有BORDER_CONSTANT3x3过滤器创建blur,您将看到结果是:

在你会得到的角度:(255*4 + 0*5) / 9 = 113,在边框上你得到了(255*6 + 0*3) / 9 = 170。这说明填充是零的。

样本代码:

代码语言:javascript
运行
复制
#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
    Mat1b img(5,5,uchar(255));
    blur(img, img, Size(3, 3), Point(-1, -1), BORDER_CONSTANT);
    return 0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34811509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档