Несоответствие цвета между настройками оттенка OpenCV и PhotoshopC++

Программы на C++. Форум разработчиков
Ответить
Гость
 Несоответствие цвета между настройками оттенка OpenCV и Photoshop

Сообщение Гость »



Изображение
Проблема: >

Я столкнулся с проблемой цвета при попытке применить выбранное значение оттенка к некоторым данным изображения с помощью OpenCV.
После применения значения оттенка +50 , цвет на выходе не похож на тот, который я вижу в Photoshop, когда проверяю результат +50.
  • На первом снимке экрана показан исходное изображение без применения значения оттенка.
  • На втором снимке экрана показано изображение со значением оттенка +50 в Photoshop.
  • На третьем снимке экрана показано изображение со значением оттенка +50 с использованием кода OpenCV.
    (как показано в : ImGui).
Вопрос:

Как я могу настроить код, чтобы изображение выглядело похожим на изображение, настроенное с помощью значения оттенка +50 в Photoshop?
В приведенном ниже коде < strong>currentImage содержит данные изображения в формате CV::Mat, а hueFactor представляет примененное значение оттенка, равное +50.< /p>
Я реализовал следующую функцию:

Код: Выделить всё

cv::Mat apply_hue_for_data(cv::Mat &currentImage, float hueFactor) {

// Create the output image with the same size and type as the current
image cv::Mat outputImage = currentImage.clone();

// Separate the alpha channel
std::vector channels(4);
cv::split(outputImage, channels);
cv::Mat alpha = channels[3];

// Convert the image from BGR to HSV
cv::cvtColor(outputImage, outputImage, cv::COLOR_BGRA2BGR);
cv::cvtColor(outputImage, outputImage, cv::COLOR_BGR2HSV);

// Loop through the rows
for (int y = 0; y < outputImage.rows; ++y) {
// Loop through the columns
for (int x = 0; x < outputImage.cols; ++x) {
// Retrieve the pixel value
cv::Vec3b &pixelValue = outputImage.at(y, x);

// Adjust the hue value
int hue = static_cast(pixelValue[0]) + static_cast(hueFactor * 179.0f);

// Ensure the hue value wraps around correctly within the 0-179 range
hue = hue % 180;
if (hue < 0) {
hue += 180;
}
pixelValue[0] = static_cast(hue);
}
}

// Convert the image back to BGR
cv::cvtColor(outputImage, outputImage, cv::COLOR_HSV2BGR);

// Merge the alpha channel back
std::vector bgrChannels;
cv::split(outputImage, bgrChannels);
std::vector bgraChannels = {bgrChannels[0], bgrChannels[1], bgrChannels[2], alpha};
cv::merge(bgraChannels, outputImage);

// Return the modified image data
return outputImage;

}
Any help please?

I have tried applying the hue value for the image data by using the above code, but after applying the hue value, the color doesn't resemble what I see in Photoshop.


Источник: https://stackoverflow.com/questions/781 ... djustments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»