29.130 prewitt
应用prewitt
运算符输入视频流。
过滤器接受以下选项:
planes
设置要处理的平面,将复制未处理的平面。 默认值为0xf
,将处理所有平面。
scale
设定值将与过滤结果相乘。
delta
设置将添加到筛选结果的值。
29.131 program_opencl
使用OpenCL
程序过滤视频。
source
OpenCL
程序源文件。
kernel
程序中的内核名称。
inputs
过滤器的输入数量。 默认为1
。
size, s
输出帧的大小。 默认值与第一个输入相同。
程序源文件必须包含具有给定名称的内核函数,该函数将针对输出的每个平面运行一次。 平面上的每次运行都会作为单独的2D
全局NDRange
排队,每个像素都会生成一个工作项。 因此,每个工作项的全局ID
偏移量是目标图像中像素的坐标。
学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~
![]()
内核函数需要采用以下参数:
- 目标图像,
__ write_only image2d_t
。
这个图像将成为输出; 内核应该写出所有内容。
- 帧索引,
unsigned int
。
这是一个从零开始的计数器,每帧增加一个。
- 源图像,
__ read_only image2d_t
。
这些是每个输入的最新图像。 内核可以从它们读取以生成输出,但是它们无法写入。
示例程序如下:
-
将输入复制到输出(输出必须与输入的大小相同)。
__kernel void copy(__write_only image2d_t destination, unsigned int index, __read_only image2d_t source) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE; int2 location = (int2)(get_global_id(0), get_global_id(1)); float4 value = read_imagef(source, sampler, location); write_imagef(destination, location, value); }
-
应用简单的转换,使用索引计数器增加一个量的输入。 采样器对像素值进行线性插值,输出的尺寸不必与输入相同。
__kernel void rotate_image(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float