OpenCV GPU简单遍历图像

    xiaoxiao2021-03-26  21

    OpenCV GPU  简单遍历图像  

    [cpp]  view plain  copy  print ? #include "cuda_runtime.h"   #include "device_launch_parameters.h"   #include <cuda.h>   #include <cuda_device_runtime_api.h>   #include <opencv2\gpu\gpu.hpp>   #include <opencv2\gpu\gpumat.hpp>   #include <opencv2\opencv.hpp>   #include <opencv.hpp>   #include <stdio.h>   #include <iostream>   #include "opencv2/gpu/device/common.hpp"   #include "opencv2/gpu/device/reduce.hpp"   #include "opencv2/gpu/device/functional.hpp"   #include "opencv2/gpu/device/warp_shuffle.hpp"   using namespace std;   using namespace cv;   using namespace gpu;   template <int nthreads>           __global__ void compute_kernel(int height, int width, const PtrStepb img ,PtrStepb dst)           {               const int x = blockIdx.x * blockDim.x + threadIdx.x;               const int y = blockIdx.y * blockDim.y + threadIdx.y;                  const uchar* src_y = (const uchar*)(img+y*img.step);//对于彩色图像               uchar* dst_y = (uchar*)(dst+y*dst.step);               if (x < width && y < height)               {                                      dst_y[3*x] = src_y[3*x] ;                   dst_y[3*x+1]  = src_y[3*x+1] ;                   dst_y[3*x+2]  = src_y[3*x+2] ;                       }      灰度图像//               //if (x < width)      //         {               // if (blockIdx.y > 0 && blockIdx.y < height )      //          {               //   ((float*)dst.ptr(blockIdx.y))[x] = ((float*)img.ptr(blockIdx.y))[x];               //   //((uchar2*)dst.ptr(blockIdx.y))[x] = make_uchar2(blockIdx.y,blockIdx.x);               // }               //}           }          int main()   {   Mat a= imread("d:/1.jpg");       GpuMat d_a(a);       GpuMat d_dst(d_a.size(),CV_8UC3);       int width = a.size().width;       int height = a.size().height;       const int nthreads =256;       dim3 bdim(nthreads, 1);       dim3 gdim(divUp(width, bdim.x), divUp(height, bdim.y));       compute_kernel<nthreads><<<gdim, bdim>>>(height,width,d_a,d_dst);       Mat dst(d_dst);       imshow("a",a);       imshow("dst",dst);       waitKey();       return 0;   }   显示结果
    转载请注明原文地址: https://ju.6miu.com/read-350371.html

    最新回复(0)