在特定区域平滑图像
可能重复:
如何在OpenCV中设置ROI?
我正在尝试在图像上使用平滑/模糊滤镜,但只在源的特定path/区域中使用。 (目前使用openCV)
如何做到这一点?
现在我正在做类似的事情
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5);
但我想要做的
cv::GaussianBlur(im, newim, cv::Size(5,5),1.5,MyClosedPath);
如果它更容易做,我也可以使用任何ios类。 (还没find办法呢)
您可以从您的原始matrix中获得一个子matrix,例如:
cv::Mat subMat = originalMatrix(cv::Rect(x, y, width, height));
其中x,y,宽度,高度是您的子图像的位置。 然后在子matrix上执行高斯模糊。
如果你想模糊复杂的形状,一种方法是模糊整个图像,然后使用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);