Как бы я постепенно осветил нижнюю границу изображения с помощью OpenCV? - PullRequest
0 голосов
/ 26 февраля 2019

Например, у меня есть изображение с 1000 строк.Ряд 900 должен выглядеть как оригинал.У меня есть альфа и бета, которые я хочу применить в строках от 1000 до 100%, в строках от 950 до 50%, в строках от 925 до 25%.Другими словами: я хочу смешать нижние 10% изображения с линейным градиентом.Есть ли в OpenCV общий способ без необходимости изменять каждый отдельный пиксель и без предварительной генерации мата такого же размера, как у оригинала?

Я использую оболочку OpenCVSharp в C #.

1 Ответ

0 голосов
/ 26 февраля 2019

Реализация на C ++:

cv::Mat img = cv::imread("lena.jpg");

int startBlend = 3 * img.rows / 4;
double alpha = 1.0;
double step = 1.0 / (img.rows - startBlend);
for (int y = startBlend; y < img.rows; ++y)
{
    img.row(y) *= alpha;
    alpha -= step;
}

cv::imshow("img", img);
cv::waitKey(0);

Результат:

enter image description here

...