Halcon 学习之图像分割之彩色分割

本人声明:在本博客以及后续的博客中,全部代码都以C++形式进行实现,使用的数据类型为 HImage,而不是单纯的使用算子或Hobject 数据类型;不对之处,请大家指正;也请大牛不吝赐教;

Halcon 中对彩色图像进行分割的算子为:

decompose3(MultiChannelImge: Image1 : Image2: Image3::)

该算子的作用是将图像分为三个单通道图像;

MultiChannleImage: 输入的要进行分割的多通道图像,一般为三通道;

Image1: 转换的第一个通道图像,对应 Red 红色;

Image2:转换的第二个通道图像,对应Green 绿色;

Image3:转换的第三个通道图像,对应 Blue 蓝色;

而在C++中对应的接口为:HImage HImage::Decompose3(HImage* Image2, HImage* Image3) const

其中,Image2,对应转换的第二个通道,即绿色通道;Image3,对应转换的第三个通道,即蓝色通道;

转换后的第一个通道,即红色通道,为返回值;

其C++实现代码如下所示:

	HImage hImg2;
	hImg2.ReadImage("01.jpg");

	HImage r, g, b;
	r = hImg2.Decompose3(&g, &b);
	showImage(r, IDC_PIC2);
	// 将图片进行保存
	r.WriteImage("jpg",0, "r.jpg");
	g.WriteImage("jpg",0, "g.jpg");
	b.WriteImage("jpg",0, "b.jpg");

处理后的 R、G、B 图像如下图所示:

Halcon 学习之图像分割之彩色分割_第1张图片Halcon 学习之图像分割之彩色分割_第2张图片Halcon 学习之图像分割之彩色分割_第3张图片

其中,从左到右依次为 R通道、G通道、B通道;使用OpenCV 进行验证,图像如下所示:

Halcon 学习之图像分割之彩色分割_第4张图片Halcon 学习之图像分割之彩色分割_第5张图片Halcon 学习之图像分割之彩色分割_第6张图片

可以看出,两种方式提取的图像完全一样;

你可能感兴趣的:(Halcon)