这个例程还是比较多的吧,如下
[numthreads(32321)]void Dim_Main (uint3 id : SV_DispatchThreadID){ float sumR = 0; float sumG = 0; float sumB = 0; float sumA = 0; for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { sumR += texBuffer[(id.x+i)*texWidth[0]+(id.y+j)].r * convolutionTempBuffer[(i+1)*3+(j+1)]; sumG += texBuffer[(id.x+i)*texWidth[0]+(id.y+j)].g * convolutionTempBuffer[(i+1)*3+(j+1)]; sumB += texBuffer[(id.x+i)*texWidth[0]+(id.y+j)].b * convolutionTempBuffer[(i+1)*3+(j+1)]; sumA += texBuffer[(id.x+i)*texWidth[0]+(id.y+j)].a * convolutionTempBuffer[(i+1)*3+(j+1)]; } } texBuffer[id.x*texWidth[0]+id.y].r = sumR; texBuffer[id.x*texWidth[0]+id.y].g = sumG; texBuffer[id.x*texWidth[0]+id.y].b = sumB; texBuffer[id.x*texWidth[0]+id.y].a = sumA; Result[id.xy] = float4(sumR sumG sumB sumA);}
一般单片机上用不了opencv的库函数的