EmguCV与OpenCV中BGR与HSV之间的转换,调用函数相同,但是数据类型稍有差别,经过一天的摸索,终于成功完成了BGR与HSV之间的互换。下面将两者之间的转换步骤与大家分享。
首先定义BGR与HSV对象
Image<Bgr, Byte> oriBgr= new Image<Bgr, Byte>(width_ori, height_ori);
Image<Hsv, float> HSVimg = new Image<Hsv, float>(width_ori, height_ori); //HSV类型要定义为float类型,因为BGR转化后数值非整数
1. BGR转换为HSV
Image<Bgr, float> oriBgr_float = new Image<Bgr, float>(width_ori, height_ori));
CvInvoke.cvConvertScale(oriBgr,oriBgr_float,1.0,0); //将原图转化为float类型的数据
CvInvoke.cvCvtColor(oriBgr_float, HSVimg, Emgu.CV.CvEnum.COLOR_CONVERSION.BGR2HSV); //根据图像的类型选择转换方式BGR2HSV,还有RGB2HSV
2. HSV转 BGR
CvInvoke.cvCvtColor(HSVimg, oriBgr_float, Emgu.CV.CvEnum.COLOR_CONVERSION.HSV2BGR);
CvInvoke.cvConvertScale(oriBgr_float,oriBgr,1.0,0);