如何使用OpenCV逐渐减轻图像的底边框?

时间:2019-02-26 14:42:43

标签: opencv opencvsharp

例如,我有一幅具有1000行的图像。第900行应看起来像原始行。我有一个alpha和beta,我想在行1000到100%,行950到50%,行925到25%上应用。换句话说:我想将图像的较低的10%与线性渐变混合。 OpenCV中是否有一种通用方法,而无需修改每个离散像素并且无需首先生成与原始像素大小相同的Mat?

我在C#中使用OpenCVSharp包装器。

1 个答案:

答案 0 :(得分:2)

在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