创建项目 | 文件与显示 | 像素操作 | 图像彩色类型转换 | 模糊、平滑、去噪 | 锐化、边缘检测 | 二值化 | 形态学 | 位置变换 | 直方图 | 霍夫变换 | 图像优化 | 图像分割
在计算机上存储的图像一般使用RGB彩色空间,但是在其他场合,我们可能需要其他的彩色空间。例如,在打印时,一般使用CMYK;在很多图像处理里,我们只需要用到图像的灰度信息,需要把图像转为灰度图;HSV空间是人眼更好理解的一个彩色空间,等等。
一、转为灰度图
Mat src = new Mat(img_lenna);
Mat result = src.CvtColor(ColorConversionCodes.BGR2GRAY);
result.SaveImage(img_result);
二、转为HSV彩色空间
Mat src = new Mat(img_green);
Mat result = src.CvtColor(ColorConversionCodes.BGR2HSV);
result.SaveImage(img_result);
Vec3b color = result.Get<Vec3b>(0, 0);
//H: color.Item0*2, S: color.Item1/255*100, V: color.Item2/255*100
在HSV空间里,H是0-360°,S是0-100%,V也是0-100%。由于一个字节只能表示256,360这个数无法表示,所以H为实际色调的一半,取值0-180。
三、反相
Mat src = new Mat(img_lenna, ImreadModes.Grayscale);
Mat result = new Mat();
Cv2.BitwiseNot(src, result);
result.SaveImage(img_result);
效果如下: