代码有待改进,但总算结果出来了。
/*图像的的像素是400*400的彩色图像 */
#include<opencv2\opencv.hpp>
#include<opencv2\gpu\gpu.hpp>
#include<cuda_runtime.h>
#include<stdio.h>
#include "device_launch_parameters.h"
using namespace cv;
__global__ void revImg(char* dev_c)
{
int idx = blockIdx.x*blockDim.x + threadIdx.x;
int idy = blockIdx.y*blockDim.y + threadIdx.y;
int tid = ((gridDim.x*blockDim.x)*idy) + idx;
if (tid<400*400*3) //注意也要乘3
dev_c[tid] = 255 - dev_c[tid];
}
int main()
{
Mat image = imread("lena.jpg");
imshow("src", image);
int width, height;
width = image.size().width;
height = image.size().height;
printf("width=%d height=%d", width,height);
int size = width * height*3;//彩色图像要乘3