gpt4 book ai didi

c# - Emgu C# OpenCV : Make Color Black transparent

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:24 33 4
gpt4 key购买 nike

我目前正在尝试使用 OpenCV 实现一个功能,该功能使图像的黑色透明。我用了这个thread作为指导。目前它不工作,我不确定是因为我转移到 C# 还是其他错误。

public Image<Bgr, Byte> BlackTransparent(Image<Bgr, Byte> image)
{
Mat imageMat = image.Mat;
Mat finalMat = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 4);
Mat tmp = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
Mat alpha = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);

CvInvoke.CvtColor(imageMat, tmp, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
CvInvoke.Threshold(tmp, alpha, 100, 255, Emgu.CV.CvEnum.ThresholdType.Binary);


VectorOfMat rgb = new VectorOfMat(3);

CvInvoke.Split(imageMat, rgb);

Mat[] rgba = { rgb[0], rgb[1], rgb[2], alpha };

VectorOfMat vector = new VectorOfMat(rgba);

CvInvoke.Merge(vector, finalMat);

return finalMat.ToImage<Bgr, Byte>();
}

如果有人有任何想法或建议,我将不胜感激。

布鲁诺

最佳答案

public Image<Bgra, Byte> BlackTransparent(Image<Bgr, Byte> image)
{
Mat imageMat = image.Mat;
Mat finalMat = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 4);
Mat tmp = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
Mat alpha = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);

CvInvoke.CvtColor(imageMat, tmp, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
CvInvoke.Threshold(tmp, alpha, 100, 255, Emgu.CV.CvEnum.ThresholdType.Binary);


VectorOfMat rgb = new VectorOfMat(3);

CvInvoke.Split(imageMat, rgb);

Mat[] rgba = { rgb[0], rgb[1], rgb[2], alpha };

VectorOfMat vector = new VectorOfMat(rgba);

CvInvoke.Merge(vector, finalMat);

return finalMat.ToImage<Bgra, Byte>();
}

函数的返回类型错误......而不是 bgr 颜色空间,它应该是 bgra 颜色空间

关于c# - Emgu C# OpenCV : Make Color Black transparent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660427/

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