【问题标题】:How to make transparency in emgu cv?如何在 emgu cv 中设置透明度?
【发布时间】:2016-06-05 09:33:06
【问题描述】:

我需要将图像的黑色背景设为透明。关于如何使用 EmguCV 做到这一点的任何想法?

下面是我在这个过程中使用的图像。

【问题讨论】:

  • C++ 代码在这里... 1) 将您的图像转换为 4 个通道(第 4 个通道是 alpha 通道):cvtColor(imageBGR, imageBGRA, COLOR_BGR2BGRA);, 2) 您可能有一个非椅子的面具。如果没有,只需为黑色像素创建一个:Mat1b mask; inRange(imageBGR, Scalar(0,0,0), Scalar(0,0,0), mask); 3) 根据掩码将 Alpha 通道设置为 0(透明):imageBGRA.setTo(Scalar(0,0,0,0), mask);。 4) 完成! 5) 在 C# 中移植快乐 :D 6) 记得保存为 png 或其他支持 alpha 通道的格式
  • @Miki 谢谢你的回复:)

标签: c# opencv transparency emgucv alpha


【解决方案1】:

首先请记住,某些图像类型不支持透明度,例如 jpeg,

您所描述的很容易实现;只需遍历像素,当遇到黑色像素(所有 rgb 值都小于 10)时,将其替换为 alpha 值设置为零的新像素(或 emgucv 中的 MCvScalar)。

(255, 255, 255, 0)

【讨论】:

  • 感谢@Dr.Haimovitz,我尝试将图像转换为位图,并用 .SetPixel(w, h, Color.Transparent); 迭代和替换像素;并将其保存为png。成功了!
  • 我也尝试了 MCvScalar 修改方法。 src[h, w].MCvScalar = new MCvScalar(255, 255, 255, 0);但这导致错误提示“无法修改 'Emgu.CV.Image.this[int, int]' 的返回值,因为它不是变量”
  • 感谢您告诉我,很高兴为您解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多