私は画像処理が初めてで、各ピクセルのぼかし値に基づいてぼかしを作成したいと考えています。各ピクセルのぼかし値を保持する整数配列があり、グローバル関数でスレッド ID を使用して、ぼかしのピクセル値を変更したいと考えています。私の画像形式Format24bppRgb であり、ピクセル値を更新したいときに問題が発生し、そのピクセルに整数値をロードできません。私は構造を本当に理解していませんでした。また、Color.red Color.blue ..value を変更せずに直接 int 値でピクセルを変更できるかどうかもわかりません。このために 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);
助けてくれてありがとう