我们可以将阈值应用于诸如RGB和LAB的色彩空间模型的单个分量吗?

时间:2018-09-18 05:17:40

标签: c++ opencv threshold

尝试将Otsu阈值应用于LAB颜色空间的单个成分“ L”。但是我不知道如何在语法上在OpenCV中指定它。

1 个答案:

答案 0 :(得分:0)

C ++代码将Lab映像分成单独的通道。

#include <iostream>
using namespace std;

#include <opencv2/opencv.hpp>
using namespace cv;
#pragma comment(lib, "opencv_world340.lib")

int main(void)
{
Mat img = imread("star.png", 1);

if (img.empty())
{
    cout << "Could not read image file." << endl;
    return 1;
}

Mat Lab;
Mat Lab_channels[3];

cvtColor(img, Lab, COLOR_BGR2Lab);

split(Lab, Lab_channels);

threshold(Lab_channels[0], Lab_channels[0], 127, 255, THRESH_OTSU);

return 0;
}

此C ++代码使用提取通道来获取第一个通道(通道0)。

#include <iostream>
using namespace std;

#include <opencv2/opencv.hpp>
using namespace cv;
#pragma comment(lib, "opencv_world340.lib")

int main(void)
{
Mat img = imread("star.png", 1);

if (img.empty())
{
    cout << "Could not read image file." << endl;
    return 1;
}

Mat Lab;
Mat Lab_channel_0;

cvtColor(img, Lab, COLOR_BGR2Lab);

extractChannel(Lab, Lab_channel_0, 0);

threshold(Lab_channel_0, Lab_channel_0, 127, 255, THRESH_OTSU);

return 0;
}

尝试一下。