这节我们来说一下,如何用OpenCL来对图片进行灰度处理。灰度处理公式很简单,如下:
Gray = R*0.299 + G*0.587 + B*0.114
我们只要把图片数据读取出来,让每个工作组包含四个数据(RGBA)。当然你也可以用RGB,只读三个数据。交OPENCL处理就可以了。由于每个像素值的处理方式相同,所以我们只有一维数组就可以了。
读取和保存处理后的图片是重点,建议大家先阅读下这两篇文章Codeblocks下Freeimage编程(1)—图片读取和Codeblocks下Freeimage编程(2)—创建图片。
下面我们看代码。
gray.cl代码:
主程序代码:
使用图片
灰度处理后输出图片