Прочитать пиксель изображения L * a * b в цветовом пространстве

От документация opencv я обнаружил, что Lb * цветовое пространство имеет ограниченное значение для каждой переменной следующим образом:

   0 < L < 100
-127 < a < 127
-127 < b < 127

Я написал код, который читает и конвертирует изображение типа BGR в Lб * цветовое пространство. Когда я показываю значения L, a и b, я обнаружил, что значения находятся вне диапазона (все они)

Например, в пикселе (y, x) значение b равно 150, но в документации opencv 2.4.13 b должно быть между -127 и 127.
Код следующий:

   #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"#include <iostream>

using namespace cv;
using namespace std;int main(int argc, char** argv){

Mat input, Lab_img;

input = imread("E:\\Walid\\Images\\b2.jpg");cvtColor(input, Lab_img, CV_BGR2Lab);
namedWindow("ORIGINAL", WINDOW_AUTOSIZE);
namedWindow("Lab", WINDOW_AUTOSIZE);for (int y = 0; y < Lab_img.rows; y++)
{
for (int x = 0; x < Lab_img.cols; x++)
{
Vec3b intensity = Lab_img.at<Vec3b>(y, x);
double L = intensity.val[0];
double a = intensity.val[1];
double b = intensity.val[2];
cout << b << std::endl;
}
}imshow("ORIGINAL", input);
imshow("Lab", Lab_img);

waitKey(0);
return 0;
}

0

Решение

Вот ссылка на cvtColor В разделе RGB <-> CIE L * a * b * говорит:

Это выводит 0 <= L <= 100, -127 <= а <= 127, -127 <= б <= 127
Затем значения преобразуются в тип данных назначения:
Для 8 бит
изображения L = L * 255/100, a = a + 128, b = b + 128.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]