例如,我有一个1000行的图像。第900行应该看起来像原始的。我有一个alpha和beta我想在第1000行到第100行,第950行到第50行,第925行到第25%。换句话说:我想将图像的低10%与线性渐变混合。 OpenCV中是否存在通用方法,无需修改每个离散像素,也无需先生成与原始尺寸相同的Mat?
我在C#中使用OpenCVSharp包装器。
在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);
结果: