Thursday, November 17, 2016

To get RGB channel and output.

#include <cv.hpp>

using namespace cv;

int main( int argc, char** argv )
{
  Mat image;
  image = imread( "resource/lena.png", IMREAD_COLOR );
  Mat OutputR( image.rows, image.cols, CV_8UC3, Scalar(0, 0, 0) );
  Mat OutputG( image.rows, image.cols, CV_8UC3, Scalar(0, 0, 0) );
  Mat OutputB( image.rows, image.cols, CV_8UC3, Scalar(0, 0, 0) );
  int height = image.rows;
  int width = image.cols;

  for(int row = 0; row < height; row++) {
   for(int col = 0; col < width; col++) {

    OutputB.at<Vec3b>(row, col)[0] = image.at<Vec3b>(row, col)[0];
    OutputB.at<Vec3b>(row, col)[1] = 0;
    OutputB.at<Vec3b>(row, col)[2] = 0;
    OutputG.at<Vec3b>(row, col)[0] = 0;
    OutputG.at<Vec3b>(row, col)[1] = image.at<Vec3b>(row, col)[1];
    OutputG.at<Vec3b>(row, col)[2] = 0;
    OutputR.at<Vec3b>(row, col)[0] = 0;
    OutputR.at<Vec3b>(row, col)[1] = 0;
    OutputR.at<Vec3b>(row, col)[2] = image.at<Vec3b>(row, col)[2];
   }
  }

  namedWindow("outr", WINDOW_NORMAL);
  imshow("outr", OutputR);

  namedWindow("outg", WINDOW_NORMAL);
  imshow("outg", OutputG);

  namedWindow("outb", WINDOW_NORMAL);
  imshow("outb", OutputB);

  waitKey(0);

  return 0;
}


Results:

No comments: