gpt4 book ai didi

c++ - 逐 block 模糊图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:27 27 4
gpt4 key购买 nike

我正在尝试分割输入图像并逐个对其进行模糊处理,但毕竟对相邻图 block 调用 cv::blur 我得到了边界像素,这与我有一次将 cv::blur 集体应用于整个图像。

Mat upper(im, Rect( 0,0, 10,10 ));
Mat lower(im, Rect( 0,11, 10,20 ))

blur( upper, upper, Size( 5, 5 ) );
blur( lower, lower, Size( 5, 5 ) );

看起来我使用的库版本 (2.4.8) 没有按照我预期的方式阅读以下内容:

Unlike the earlier versions of OpenCV, now the filtering operations fully support the notion of image ROI, that is, pixels outside of the ROI but inside the image can be used in the filtering operations.

(取自:See FilterEngine::apply description here)

P.S.1:我试图提取 cv::boxFilter 实现并更改 srcRoi 参数值,但结果也有误。

Mat src = im.clone();
Mat dst = src; // Trying to perform the operation in-place

Size ksize( 5, 5 );
Point anchor(-1,-1);

Ptr<FilterEngine> f = createBoxFilter(
src.type(), dst.type(),
ksize, anchor, true, BORDER_DEFAULT
);

f->apply(
src, dst,
Rect(0,0,10,10),
Point(0,0), false
);
f->apply(
src, dst,
Rect(0,0,10,10),
Point(0,11), false
);

P.S.2:帮助为源代码着色会很有帮助。

最佳答案

您看到的问题是因为您正试图就地执行此操作。一旦你模糊了图像的一部分,那么你就使模糊图像任何相邻部分所需的源像素无效。解决方案是不要就地执行此操作,以便原始源像素可用于您想要模糊的图像的任何部分。

关于c++ - 逐 block 模糊图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com