Привет, я пытаюсь извлечь освещение и тень из одной поверхности и применить ее к другому типу поверхности. Я преобразовываю изображение в HSV, извлекаю компонент Hue и строю его, что, кажется, дает мне хорошее представление о том, где находятся освещение и тени. Однако, когда я заменяю компонент оттенка исходного изображения своим окончательным изображением, я получаю всевозможные оттенки зеленого и синего, которые не нужны. Есть ли другие методы, которые можно использовать для проецирования тени и освещения?
cvtColor( img0, hsv, CV_BGR2HSV );
components[0].create( hsv.size(), 1);
components[1].create( hsv.size(), 1);
components[2].create( hsv.size(), 1);
split(hsv, components);
…
cvtColor( drawing, hsv_output, CV_BGR2HSV );
components_output[0].create( hsv.size(), 1);
components_output[1].create( hsv.size(), 1);
components_output[2].create( hsv.size(), 1);
split(hsv_output, components_output);
components_output[0] = 0.5 * components_output[0] + 0.5 * components[0];
int ch[] = {0 , 0};
mixChannels(&components_output[0], 1, &hsv_output, 1, ch, 1);
cvtColor( hsv_output, drawing, CV_HSV2BGR );
Задача ещё не решена.
Других решений пока нет …