铅笔

在你的害怕中坚持的越多,你就会越自信
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

图像色彩空间转换

Posted on 2020-04-25 16:19  黑色の铅笔  阅读(524)  评论(0编辑  收藏  举报

1.图像色彩空间

色彩是如何表现出来的? 图像色彩空间

  • 不同的硬件设备显示图像的方式不一样,所以形成了不同的色彩空间

  • 众多色彩空间中存在一种与设备无关的色彩空间,即RGB色彩空间 (最常用)opencv中的imwrite()默认读取的图片就是使用RGB色彩空间进行读取的,这样在任何设备上都可以正常的显示图像。Android相机设备拍出的图片就是YUV格式的,但是最终底层保存的是RGB格式,就是为了能够显示在不同的设备里面。相机所支持的色彩空间与其设备有很大联系

  • 色彩空间一般最终都会统一到RGB的色彩空间

2.opencv 中一些色彩空间的函数

  • 色彩空间转换函数- cvtColor

    • COLOR_BGR2GRAY = 6 彩色到灰度

    • COLOR_GRAY2BGR = 8 灰度到彩色

    • COLOR_BGR2HSV = 40 BGR到HSV

    • COLOR_HSV2BGR = 54 HSV到 BGR

  • 图像保存 - imwrite

    • 第一个参数是图像保存路径

    • 第二个参数是图像内存对象

3. 例子

C++

 1 #include <opencv2/opencv.hpp>
 2 #include <iostream>
 3 
 4 using namespace cv;
 5 using namespace std;
 6 
 7 int main(int artc, char** argv) {
 8     Mat src = imread("test.png");
 9     if (src.empty()) {
10         printf("could not load image...\n");
11         return -1;
12     }
13     namedWindow("input", WINDOW_AUTOSIZE);
14     imshow("input", src);
15 
16     Mat gray;
17     cvtColor(src, gray, COLOR_BGR2GRAY);
18     imwrite("D:/gray.png", gray);
19 
20     waitKey(0);
21     return 0;
22 }

 

Python

1 import cv2 as cv
2 
3 src = cv.imread("test.png")
4 cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
5 cv.imshow("input", src)
6 gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
7 cv.imshow("gray", gray)
8 cv.waitKey(0)
9 cv.destroyAllWindows()