如何使用opencv扩展遮罩的边缘?

如何使用opencv扩展遮罩的边缘?,opencv,Opencv,我有一个二进制掩码cv::Mat。我想放大遮罩的边缘,以确保排除靠近遮罩边缘的区域的分析 我的问题是,如何使用opencv对二元遮罩的边缘进行出血?通过“出血”,我假设您指的是形态学变换()。此操作将在输入矩阵的每个像素上应用内核矩阵。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘放大一个像素 C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int

我有一个二进制掩码
cv::Mat
。我想放大遮罩的边缘,以确保排除靠近遮罩边缘的区域的分析

我的问题是,如何使用opencv对二元遮罩的边缘进行出血?

通过“出血”,我假设您指的是形态学变换()。此操作将在输入矩阵的每个像素上应用内核矩阵。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘放大一个像素

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
因此,您的解决方案可能是这样的:

Mat input = ... 
Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, 3);
Mat output;
cv::dilate(input, output, kernel);
如果这个例子还不能让您满意,那么可以在中找到更好的例子。

关于“出血”,我想您指的是形态变换()。此操作将在输入矩阵的每个像素上应用内核矩阵。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘放大一个像素

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
因此,您的解决方案可能是这样的:

Mat input = ... 
Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, 3);
Mat output;
cv::dilate(input, output, kernel);
如果这个例子还不能让您满意,那么可以在中找到更好的例子。

关于“出血”,我想您指的是形态变换()。此操作将在输入矩阵的每个像素上应用内核矩阵。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘放大一个像素

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
因此,您的解决方案可能是这样的:

Mat input = ... 
Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, 3);
Mat output;
cv::dilate(input, output, kernel);
如果这个例子还不能让您满意,那么可以在中找到更好的例子。

关于“出血”,我想您指的是形态变换()。此操作将在输入矩阵的每个像素上应用内核矩阵。如果内核是一个完全填充的3x3矩阵,它将粗略地将边缘放大一个像素

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
因此,您的解决方案可能是这样的:

Mat input = ... 
Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, 3);
Mat output;
cv::dilate(input, output, kernel);

如果这个例子还不能让您满意,您可以在。

中找到一个更好的例子,您的意思是“出血”吗?正确。谢谢,我来看看放大法。这是一个关于如何使用OpenCV运行腐蚀和膨胀的简短教程。你说的“出血”是什么意思?正确。谢谢,我来看看放大法。这是一个关于如何使用OpenCV运行腐蚀和膨胀的简短教程。你说的“出血”是什么意思?正确。谢谢,我来看看放大法。这是一个关于如何使用OpenCV运行腐蚀和膨胀的简短教程。你说的“出血”是什么意思?正确。谢谢,我来看看放大法。是一个关于如何使用OpenCV运行侵蚀和膨胀的简短教程。