可能重复:
如何在 OpenCV 中设置 ROI?
我正在尝试在图像上使用平滑/模糊滤镜,但仅限于源的特定路径/区域。(目前使用openCV)
怎么可能呢?
现在我正在做类似的事情
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5);
但我想做
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5,MyClosedPath);
如果更容易,我也可以使用任何 ios 类。(也没有找到方法)
可能重复:
如何在 OpenCV 中设置 ROI?
我正在尝试在图像上使用平滑/模糊滤镜,但仅限于源的特定路径/区域。(目前使用openCV)
怎么可能呢?
现在我正在做类似的事情
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5);
但我想做
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5,MyClosedPath);
如果更容易,我也可以使用任何 ios 类。(也没有找到方法)
您可以从原始矩阵中获取子矩阵,例如:
cv::Mat subMat = originalMatrix(cv::Rect(x, y, width, height));
其中 x,y, width, height 是子图像的位置。然后在子矩阵上执行高斯模糊。
[编辑]如果你想模糊复杂的形状,一种方法是模糊整个图像,然后使用 mat.copyTo 与你的模糊部分的面具:
cv::Mat mask = ?; // this should be a CV_8U image with 0 pixels everywhere but where you want to blur the original image
cv::Mat blurred;
cv::gaussianBlur(image, blurred, cv::Size(5,5),1.5);
cv::Mat output = image.clone();
blurred.copyTo(output, mask);