OPENCV圖像色彩空間與應用轉換[利用RGB轉HSV達到圖像去背/顏色偵測 效果]

OPENCV圖像色彩空間與應用轉換[利用RGB轉HSV達到圖像去背/顏色偵測 效果]

OPENCV圖像色彩空間與應用轉換[利用RGB轉HSV達到圖像去背/顏色偵測 效果]


資料來源: https://mp.weixin.qq.com/s?__biz=MzA4MDExMDEyMw==&mid=2247487846&idx=1&sn=b37138529b27f27761f8b413359f23ff&chksm=9fa86622a8dfef34e230db6b7934ba31ba35aaa728c6de441a500f78f4df807042cd2d45080e&scene=126&sessionid=1580708165&key=770228bd0c42a094e368c6b53f28c79cc88b8e633bdee55433372790587a329b009805d11cf908a98ebc2ae614b0c8d31b028c6bd2a7713ba8f3df5e924c67bc62c5bf61d8cf616e0f4404b8413fc200&ascene=1&uin=MjIwODk2NDgxNw%3D%3D&devicetype=Windows+10&version=6208006f&lang=zh_TW&exportkey=ApIdp03xFZhH6gGZaGNX7D4%3D&pass_ticket=2DoZmWVnEtz3icm2PB%2BayuUcqv9cXB85Gfur%2FLC9QWuEf3aWO8oX%2F5eXQtPf9s4Y

H(Hue) 表示顏色通道,不同的值表示不同的顏色範圍

S表示飽和度通道,表示色澤

V表示亮度通道,代表圖像亮度高低級別

在H、S、V通道上對圖像亮度跟顏色或者飽和度的調整就非常方便了,另外對一些特定的顏色值進行分離也比較方便了。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char *argv[])
{
    Mat src = imread("D:/vcprojects/images/cat.jpg");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input", WINDOW_AUTOSIZE);
    imshow("input", src);

    // RGB to HSV
    Mat hsv;
    cvtColor(src, hsv, COLOR_BGR2HSV);
    imshow("hsv", hsv);

    // RGB to YUV
    Mat yuv;
    cvtColor(src, yuv, COLOR_BGR2YUV);
    imshow("yuv", yuv);

    // RGB to YUV
    Mat ycrcb;
    cvtColor(src, ycrcb, COLOR_BGR2YCrCb);
    imshow("ycrcb", ycrcb);

    Mat src2 = imread("D:/javaopencv/tinygreen.png");
    imshow("src2", src2);
    cvtColor(src2, hsv, COLOR_BGR2HSV);
    Mat mask;
    inRange(hsv, Scalar(35, 43, 46), Scalar(99, 255, 255), mask);
    imshow("mask", mask);

    waitKey(0);
    return 0;
}

One thought on “OPENCV圖像色彩空間與應用轉換[利用RGB轉HSV達到圖像去背/顏色偵測 效果]

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *