图像处理起点就是颜色,上篇已经学习了BGR等结构体,本节再学习其他。
1.MCvScalar的学习,颜色都是由它搞起。
可以看出由4个分量组成。构造函数也是4个。函数应用中就是把把4个分量变数组。
颜色的接口IColor---主要是维数和每维具体的数组。
其他颜色,常用的Hls,和HSV
double d1 = 0, d2 = 0, d3 = 0, d4 = 0;
d1 = (double)numericUpDown5.Value;//blue:蓝色分量
d2 = (double)numericUpDown6.Value;//green绿色分量
d3 = (double)numericUpDown7.Value; // 红色分量
Hls h1 = new Hls();
Hsv h2 = new Hsv(d1, d2, d3);
using (Emgu.CV.Image<Hsv, byte> tu1 = new Image<Hsv, byte>(300, 400, h2))
{
string str1, str2, str3, str4, str5, str6;
double[] kj = h2.MCvScalar.ToArray();
str6 = string.Format("1:{0};2:{1};3:{2};4:{3}", kj[0], kj[1], kj[2], kj[3]);
pictureBox1.Image = tu1.ToBitmap();
str1 = "Dimension:" + h2.Dimension.ToString() + "\n";
str2 = "Hue :" + h2.Hue + "\n";
str3 = "Value:" + h2.Value + "\n";
str4 = "Satuation:" + h2.Satuation + "\n";
str5 = "MCvScalar:" + "\n" + h2.MCvScalar.V0.ToString() + "\n" + h2.MCvScalar.V1.ToString()
+ "\n" + h2.MCvScalar.V2.ToString() + "\n" + h2.MCvScalar.V3.ToString() + "\n";
richTextBox1.Text = str1 + str2 + str3 + str4 + str5 + str6;
}
应用重点:主要注意颜色之间进行转换。
应用2种函数:
1.
public static void CvtColor(IInputArray src,IOutputArray dst,ColorConversion code,int dstCn = 0)
其中src为原图像, dst为目标颜色图像尺寸,code为变换类型如下(共140种组合)。
2.用的比较多的直接用image类中.Convert<颜色类型,数据类型> ();