我想使用 IPP(集成性能基元)函数创建线性渐变,并避免逐像素颜色操作。
换句话说,我找不到合适的函数或函数组合来创建具有渐变 R0 到 R1、G0 到 G1、B0 到 B1(初始和最终 RGB 值)的 RGB 图像。我可以通过循环每个像素并设置颜色来手动创建它,但我希望有更优雅(和快速)的方法来做到这一点。
我想使用 IPP(集成性能基元)函数创建线性渐变,并避免逐像素颜色操作。
换句话说,我找不到合适的函数或函数组合来创建具有渐变 R0 到 R1、G0 到 G1、B0 到 B1(初始和最终 RGB 值)的 RGB 图像。我可以通过循环每个像素并设置颜色来手动创建它,但我希望有更优雅(和快速)的方法来做到这一点。
我理解的方式,ippiImageRamp
只能创建灰度值斜坡,对吧?
或者,您可以使用插值ippiResizeSqrPixel
将 2x2 像素图像调整为全尺寸IPPI_INTER_LINEAR
:
RGB0 | RGB1
--------------- => [Full Sized Image]
RGB0 | RGB1
结果应该是线性渐变(尽管我从未尝试过)。如果需要旋转渐变,可以ippiWarpAffine
同时使用缩放和旋转。
我找到了一些解决方案。借助 ippiImageRamp 函数。
该函数创建一个可用作测试图像的单通道或三通道图像,以检查应用不同图像处理功能的效果。
目标图像像素值根据以下公式之一计算:
dst(x,y) = 偏移 + 斜率 * x,如果轴 = ippAxsHorizontal,
dst(x,y) = 偏移 + 斜率 * y,如果轴 = ippAxsVertical,
dst(x,y) = 偏移 + 斜率 * x * y,如果轴 = ippAxsBoth