如何对 ROI 执行 OpenCV boxFilter?

问题描述 投票:0回答:1

我有一张图像,我想对该图像的 ROI 执行 OpenCV boxFilter。

image = cv::imread(argv[1], CV_LOAD_IMAGE_COLOR);   
cv::Rect roi( 10, 10, 64, 64);
cv::Mat output;
cv::boxFilter(image(roi),output,-1,cv::Size(scale_size,scale_size));

我想知道如果内核超出了 ROI 会发生什么?使用 ROI 之外但仍在图像内的像素进行过滤,还是仅使用 BorderType 指定的值? 其实我想用前者来做过滤。

非常感谢。

EnjImage

opencv
1个回答
0
投票
用于将 ROI 图像传递给

cv::Mat::operator()(const Rect & roi

cv::boxFilter
返回一个新的
cv::Mat
对象。
这个新对象与原始对象共享数据,但在其他方面是独立的(并且其元数据也是独立的)。
因此,当您将其传递给 

cv::Mat image

 时,该函数会将 
cv::boxFilter 视为独立图像,并将 ROI 边界上的像素视为输入的真实边界,并将根据
image(roi)
参数进行处理.
即它不会使用原始图像中的像素,但不会使用 ROI 图像中的像素。

© www.soinside.com 2019 - 2024. All rights reserved.