我是图像处理的新手,想根据每个像素模糊值进行模糊。有一个整数数组保存每个像素的模糊值并在全局函数中使用 threadid,我想更改该像素值以进行模糊。我的图像格式是 Format24bppRgb 并且当我想更新像素值时出现问题,我无法将整数值加载到该像素。我真的不了解结构,也不知道是否可以直接使用 int 值更改像素而不更改 Color.red Color.blue ..value。我应该为此将 Format24bppRgb 格式转换为任何其他图像吗?这是我的代码:
__global__ void Workload(Format24bppRgb* imageData, int imageWidth, int *PixelBlurAmount)
{
int tidX = threadIdx.x + blockIdx.x * blockDim.x;
int tidY = threadIdx.y + blockIdx.y * blockDim.y;
int tid = tidX + tidY * imageWidth;
imageData[tid] = PixelBlurAmount[tid];
}
和主要功能:
int pixelBlurValue[1024*1024];
for(int i=0; i<8; i++)
{
for(int j=0; j<(1024*1024/8); j++)
{
pixelBlurValue[i*j]=i; // VALUE
}
}
int * dev_pixValue;
cudaMalloc(&dev_pixValue,sizeof(int)* (1024*1024));
cudaMemcpy(dev_pixValue,pixelBlurValue,sizeof(int) * (1024*1024) ,cudaMemcpyHostToDevice);
Workload<<<gridDim, blockDim>>>(
dev_ptr_imageData,
imageWidth,
dev_pixValue);
感谢您的任何帮助