8/28/2013

OpenCV Mat Data point access and memcpy to another Mat, example source code

This is example source code.

-----
Mat inImg = imread("Penguins.jpg",0);
//Data point copy
unsigned char * pData = inImg.data;
 
int width = inImg.rows;
int height = inImg.cols;
//gray color value reverse
for(int i=0; i < width; ++i)
{
  for(int j=0; j < height; ++j)
  {
   pData[j*width+i] = 255-pData[j*width+i];
  }
}
//create another Mat same size, type with inImg
Mat outImg(width, height, CV_8UC1);
//data copy using memcpy function
memcpy(outImg.data, pData, sizeof(unsigned char)*width*height);
 
//processing and copy check
namedWindow("Test");
imshow("Test", inImg);

namedWindow("Test2");
imshow("Test2", outImg);

cvWaitKey(0);
-----

Thank you.

8/26/2013

OpenCV - RotatedRect Draw Example source code

This source code is copied from this site -> http://docs.opencv.org/modules/core/doc/basic_structures.html for our convenience.


Mat image(200, 200, CV_8UC3, Scalar(0));
RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30);

Point2f vertices[4];
rRect.points(vertices);
for (int i = 0; i < 4; i++)
    line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0));

Rect brect = rRect.boundingRect();
rectangle(image, brect, Scalar(255,0,0));

imshow("rectangles", image);
waitKey(0);



We can get rect information and rotatedRect information from RotatedRect variance.
From the above source code, green line is drawn by line function for describing rotated rect. 
And Blue line means outlier rect of target. It is drawn by rectangle function.
Thank you.