Objective c 图像特定区域的平滑处理

Objective c 图像特定区域的平滑处理,objective-c,ios,image-processing,opencv,Objective C,Ios,Image Processing,Opencv,可能重复: 我尝试在图像上使用平滑/模糊过滤器,但仅限于源的特定路径/区域。当前正在使用openCV 如何做到这一点 现在我在做类似的事情 cv::GaussianBlur(im, newim, cv::Size(5,5),1.5); 但我想做什么 cv::GaussianBlur(im, newim, cv::Size(5,5),1.5,MyClosedPath); 如果比较容易的话,我也可以使用任何ios类。还没有找到一种方法,或者你可以从你的原始矩阵中得到一个子矩阵,例如: cv::

可能重复:

我尝试在图像上使用平滑/模糊过滤器,但仅限于源的特定路径/区域。当前正在使用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、宽度和高度是子图像的位置。 然后在子矩阵上执行高斯模糊

[编辑] 如果要模糊复杂形状,一种方法是模糊整个图像,然后将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);

您可以从原始矩阵中获取子矩阵,例如:

cv::Mat subMat = originalMatrix(cv::Rect(x, y, width, height));
其中x、y、宽度和高度是子图像的位置。 然后在子矩阵上执行高斯模糊

[编辑] 如果要模糊复杂形状,一种方法是模糊整个图像,然后将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);

设置感兴趣的ROI区域,然后将其复制到另一个垫子上,使其平滑,然后将其复制回原始垫子。设置感兴趣的ROI区域,然后将其复制到另一个垫子上,使其平滑,然后将其复制回原始矩阵。我需要做一些更复杂的形状和孔-以及如何将它们组合回一个图像?子矩阵中的任何更改也将应用于原始矩阵。我会编辑你第二个问题的答案,让我知道你的问题是否得到了答案!thxI需要做一些更复杂的形状和孔-我如何将它们组合回一个图像?子矩阵中的任何更改也会应用到原始矩阵中。我会编辑你第二个问题的答案,让我知道你的问题是否得到了答案!谢谢