CoE Cluster november 2011/CUDA

From Teknologisk videncenter
< CoE Cluster november 2011
Revision as of 10:18, 9 December 2011 by Pasa (talk | contribs) (Created page with "// Read image from file, remove blue channel and write onto another file #include <iostream> #include <string> #include <sstream> #include <cv.h> #include <highgui.h> using name...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

// Read image from file, remove blue channel and write onto another file

  1. include <iostream>
  2. include <string>
  3. include <sstream>
  4. include <cv.h>
  5. include <highgui.h>

using namespace cv; using namespace std;

  1. include "PixelMat.hpp"

void startCUDA(int blocks, int threads, unsigned char* img, int rows, int cols, int step);

int main(int argc, char* argv[]) {

 int blocks = 0;
 int threads = 0;
 if (argc > 4)
   {
     istringstream buf1(argv[1]);
     buf1 >> blocks;
     istringstream buf2(argv[2]);
     buf2 >> threads;
     PixelMat img = (PixelMat) imread(argv[3],-1);
     int rows = img.rows;
     int cols = img.cols;
     int step = img.step;
     fprintf(stderr, "%d\n", step);
     startCUDA(blocks, threads, img.data, rows, cols, step);
     imwrite(argv[4], img);
   }
 else
   cout << "Usage: " << argv[0] << " <blocks> <threads> <inputfile> <outputfile>" << endl;
 return 0;

}


// removeblue.cu

// Read image from file, remove blue channel and write onto another file


//#include <stdio.h> //#include <stdlib.h> //#include <unistd.h>

__device__ void RGB(int x, int y, unsigned char* m, int step, int r, int g, int b) {

 unsigned char *p;
 p = ((unsigned char *) (m + step*x))+3*y;
 *p = (unsigned char) b;
 *(p+1) = (unsigned char) g;
 *(p+2) = (unsigned char) r;

} __device__ void RGB(int x, int y, unsigned char* m, int step, int rgb) {

 unsigned char *p;
 p = ((unsigned char *) (m + step*x)+3*y);
 *p = (unsigned char) (rgb&0xff);
 *(p+1) = (unsigned char) ((rgb>>8)&0xff);
 *(p+2) = (unsigned char) ((rgb>>16)&0xff);

} __device__ int RGB(int x, int y, unsigned char* m, int step) {

 unsigned char *p;
 unsigned int b;
 p = ((unsigned char *) (m + step*x)+3*y);
 b = *p+((*(p+1))<<8)+((*(p+2))<<16);