gpt4 book ai didi

c# - 填补emgu cv中的漏洞

转载 作者:太空狗 更新时间:2023-10-29 20:49:34 24 4
gpt4 key购买 nike

如何在 emgu cv 中填充二进制图像中的孔?在 Aforge.net 中很简单,使用 Fillholes 类。

最佳答案

认为这个问题有点老了,我想为这个问题提供一个替代解决方案。

如果您使用以下方法,您可以获得与 Chris 相同的结果而不会出现内存问题:

private Image<Gray,byte> FillHoles(Image<Gray,byte> image)
{
var resultImage = image.CopyBlank();
Gray gray = new Gray(255);
using (var mem = new MemStorage())
{
for (var contour = image.FindContours(
CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
RETR_TYPE.CV_RETR_CCOMP,
mem); contour!= null; contour = contour.HNext)
{
resultImage.Draw(contour, gray, -1);
}
}

return resultImage;
}

上述方法的好处是您可以有选择地填充符合您标准的孔。例如,您可能想要填充像素数(blob 内的黑色像素数)低于 50 的孔,等等。

private Image<Gray,byte> FillHoles(Image<Gray,byte> image, int minArea, int maxArea)
{
var resultImage = image.CopyBlank();
Gray gray = new Gray(255);

using (var mem = new MemStorage())
{
for (var contour = image.FindContours(
CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
RETR_TYPE.CV_RETR_CCOMP,
mem); contour!= null; contour = contour.HNext)
{
if ( (contour.Area < maxArea) && (contour.Area > minArea) )
resultImage.Draw(contour, gray, -1);
}
}

return resultImage;
}

关于c# - 填补emgu cv中的漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com