Color Inversion

168 字
1 分钟
Color Inversion

Color Inversion#

题面#

答案#

#include <cuda_runtime.h>
__global__ void invert_kernel(unsigned char* image, int width, int height) {
int x = blockDim.x * blockIdx.x + threadIdx.x;
int id = x * 4;
if (id < width * height * 4) {
image[id] = 255 - image[id];
image[id + 1] = 255 - image[id + 1];
image[id + 2] = 255 - image[id + 2];
image[id + 3] = image[id + 3];
}
}
// image_input, image_output are device pointers (i.e. pointers to memory on the GPU)
extern "C" void solve(unsigned char* image, int width, int height) {
int threadsPerBlock = 256;
int blocksPerGrid = (width * height + threadsPerBlock - 1) / threadsPerBlock;
invert_kernel<<<blocksPerGrid, threadsPerBlock>>>(image, width, height);
cudaDeviceSynchronize();
}

通道为:(R,G,B,ALPHA)就是前三个通道是 RGB 通道,需要进行取反,也就是原值换成 255 - 原值,而第四个通道表示的是透明度,不需要变。

Color Inversion
https://dongyanzhang.com/posts/leetgpu/color-inversion/
作者
阿东阿言
发布于
2026-07-13
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
阿东阿言
I share my notes | projects | experience here...
公告
欢迎来到阿东阿言的博客
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
25
分类
3
标签
5
总字数
11,186
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
v1.0.0
文章许可
CC BY-NC-SA 4.0