基于OpenCvSharp的数字图像处理 - 图像彩色类型转换

创建项目  |  文件与显示  |  像素操作  |  图像彩色类型转换  |  模糊、平滑、去噪  |  锐化、边缘检测  |  二值化  |  形态学  |  位置变换  |  直方图  |  霍夫变换  |  图像优化  |  图像分割

完整示例项目

 

在计算机上存储的图像一般使用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(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);

效果如下:

基于OpenCvSharp的数字图像处理 - 图像彩色类型转换_第1张图片

你可能感兴趣的:(数字图像处理)