OpenCV cie XYZ в cie xyY преобразование цветового пространства - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть изображение RGB, и я хочу получить результирующее цветовое пространство cie xyY, я могу получить цветовое пространство XYZ, выполнив COLOR_BGR2XYZ, теперь мне нужно получить цветовое пространство xyY.

из здесь я получил это:

x=X/X+Y+Z

y=Y/X+Y+Z

от здесь

я получил этот код:

 Mat result;
    result.create(img.rows,img.cols,img.type());

    cvtColor(img,result,CV_RGB2XYZ);

    int nr=result.rows;
    int nc=result.cols*result.channels();

    // XYZ to xyY
    for (int i=0;i<nr;i++)
    {
            for (int j=0;j<nc;j++)
            {
                    int X=result.at<Vec3b>(i,j)[2];
                    int Y=result.at<Vec3b>(i,j)[1];
                    int Z=result.at<Vec3b>(i,j)[0];

                    result.at<Vec3f>(i,j)[0]=X/(X+Y+Z);
                    result.at<Vec3f>(i,j)[1]=Y/(X+Y+Z);
                    result.at<Vec3f>(i,j)[2]=Y;
            }
    }

это самый эффективный способсделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...