C# 如何使emgu cv透明?

C# 如何使emgu cv透明?,c#,opencv,transparency,emgucv,alpha,C#,Opencv,Transparency,Emgucv,Alpha,我有一个使图像的黑色背景透明的要求。关于如何使用EmguCV实现这一点,有什么想法吗 下面是我用于此过程的图像 首先请记住,某些图像类型不支持透明度,例如jpeg 你所描述的很容易实现;只需迭代像素,当遇到黑色像素(所有rgb值都小于10)时,将其替换为alpha值设置为零的新像素(或emgucv中的MCvScalar) (255,255,255,0) 首先请记住,某些图像类型不支持透明度,例如jpeg 你所描述的很容易实现;只需迭代像素,当遇到黑色像素(所有rgb值都小于10)时,将其替换为a

我有一个使图像的黑色背景透明的要求。关于如何使用EmguCV实现这一点,有什么想法吗

下面是我用于此过程的图像


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

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

(255,255,255,0)


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

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

(255,255,255,0)


这里的C++代码…1) 将图像转换为4个通道(第4个通道为alpha通道):
cvtColor(imageBGR、imageBGRA、COLOR_BGR2BGRA),2)您可能有一个非椅子的面具。如果没有,只需为黑色像素创建一个:
Mat1b mask;范围(成像BGR,标量(0,0,0),标量(0,0,0),掩模)3)根据掩码将alpha通道设置为0(透明):
imageBGRA.setTo(标量(0,0,0,0),掩码)。4) 完成了!5) 愉快地移植到C#:D 6)记住另存为png或其他支持alpha的格式channels@Miki感谢您的回复:)C++代码在这里。。。1) 将图像转换为4个通道(第4个通道为alpha通道):
cvtColor(imageBGR、imageBGRA、COLOR_BGR2BGRA),2)您可能有一个非椅子的面具。如果没有,只需为黑色像素创建一个:
Mat1b mask;范围(成像BGR,标量(0,0,0),标量(0,0,0),掩模)3)根据掩码将alpha通道设置为0(透明):
imageBGRA.setTo(标量(0,0,0,0),掩码)。4) 完成了!5) 愉快地移植到C#:D 6)记住另存为png或其他支持alpha的格式channels@Miki感谢您的回复:)谢谢@Dr.Haimovitz,我尝试将图像转换为位图,并通过迭代将像素替换为.SetPixel(w,h,Color.Transparent);并将其保存到png。成功了!我也尝试了MCvScalar修改方法。src[h,w].MCvScalar=新的MCvScalar(255,255,255,0);但这导致了一个错误,即“无法修改'Emgu.CV.Image.this[int,int]'的返回值,因为它不是一个变量”感谢您让我知道,很高兴为您解决了这个问题。谢谢@Dr.Haimovitz,我尝试将图像转换为位图,并通过迭代将像素替换为.SetPixel(w,h,Color.Transparent);并将其保存到png。成功了!我也尝试了MCvScalar修改方法。src[h,w].MCvScalar=新的MCvScalar(255,255,255,0);但这导致了一个错误,即“无法修改'Emgu.CV.Image.this[int,int]'的返回值,因为它不是一个变量”。感谢您让我知道,很高兴它为您解决了问题。