OpenCV Drawing Example, (line, circle, rectangle, ellipse, polyline, fillConvexPoly, putText, drawContours)

line, circle, rectangle, ellipse, polyline, fillConvexPoly, putText, drawContours example source code!!.















..

#include "opencv2/opencv.hpp"

using namespace cv;
using namespace std;

int main(int, char)
{
 Mat img(500, 500, CV_8UC3);
 img.setTo(255);

 ///////////////////////////////////////////////////
 //line example
 cv::Point pt(300, 300);
 line(img, Point(10, 10), pt, CV_RGB(255, 0, 0), 2);
 line(img, Point(300, 10), Point(30,300), Scalar(255, 0, 0), 2);
 ///////////////////////////////////////////////////
 

 ///////////////////////////////////////////////////
 //Circle example
 circle(img, Point(250, 250), 100, CV_RGB(0, 255, 0), 3); 
 cv::Point center(400, 400);
 circle(img, center, 300, Scalar(255,255,0), 10);
 circle(img, Point(40,40), 10, Scalar(255, 0, 0), -1);
 ///////////////////////////////////////////////////
   

 ///////////////////////////////////////////////////
 //rectangle example
 rectangle(img, Rect(10, 10, 200, 200), CV_RGB(255, 0, 0), 2);
 rectangle(img, Rect(Point(40, 40), Point(400, 400)), Scalar(255, 0, 0), 10);
 ///////////////////////////////////////////////////

  
 /////////////////////////////////////////////////// 
 //ellipse example 1
 ellipse(img, Point(100, 100), Size(100, 50), 0, 0, 360, CV_RGB(255, 0, 0));
 ellipse(img, Point(100, 100), Size(100, 50), 30, 0, 360, CV_RGB(0, 255, 0)); 
 ellipse(img, Point(100, 100), Size(100, 50), 60, 0, 360, CV_RGB(0, 0, 255));

 ellipse(img, Point(300, 300), Size(100, 50), 0, 0, 180, CV_RGB(255, 0, 0));
 ellipse(img, Point(300, 300), Size(100, 50), 30, 0, 270, CV_RGB(0, 255, 0));
 ellipse(img, Point(300, 300), Size(100, 50), 60, 0, 360, CV_RGB(0, 0, 255));
 ///////////////////////////////////////////////////
 
 /////////////////////////////////////////////////// 
 //ellipse example 2
 RotatedRect rRect = RotatedRect(Point2f(300, 300), Size2f(300, 100), 30);
 ellipse(img, rRect, CV_RGB(255, 0, 0));

 //draw rect and inside rect in RotatedRect
 Point2f vertices[4];
 rRect.points(vertices);
 for (int i = 0; i <  4; i++)
  line(img, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 0));

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

 ///////////////////////////////////////////////////
 //polylines example 1 
 vector< Point> contour;
 contour.push_back(Point(50, 50));
 contour.push_back(Point(300, 50));
 contour.push_back(Point(350, 200));
 contour.push_back(Point(300, 150));
 contour.push_back(Point(150, 350));
 contour.push_back(Point(100, 100));

 const Point *pts = (const cv::Point*) Mat(contour).data;
 int npts = Mat(contour).rows;

 std::cout <<  "Number of polygon vertices: " <<  npts <<  std::endl;
 // draw the polygon 
 polylines(img, &pts, &npts, 1, false, Scalar(0, 255, 0));

 //polylines example 2 
 contour.clear();
 contour.push_back(Point(400, 400));
 contour.push_back(Point(250, 250));
 contour.push_back(Point(50, 300));

 pts = (const cv::Point*) Mat(contour).data;
 npts = Mat(contour).rows;
 polylines(img, &pts, &npts, 1, true, Scalar(255, 0, 0));
 ///////////////////////////////////////////////////


 ///////////////////////////////////////////////////
 //fillConvexPoly example 1 
 cv::Point ptss[4]; 
 ptss[0] = cv::Point(100, 100);
 ptss[1] = cv::Point(150, 200);
 ptss[2] = cv::Point(300, 300);
 ptss[3] = cv::Point(400, 100);

 cv::fillConvexPoly(img, ptss, 4, cv::Scalar(0, 0, 200));
 ///////////////////////////////////////////////////

 
 ///////////////////////////////////////////////////
 //textout example 1
 char TestStr[100];
 sprintf(TestStr, "total time : %lf sec", 0.001);
 putText(img, TestStr, Point(10, 250), CV_FONT_NORMAL, 1, Scalar(0, 0, 0), 1, 1); //OutImg is Mat class;
 ///////////////////////////////////////////////////
 imshow("show0", img);
 

 



 ///////////////////////////////////////////////////
 //drawContour example1
 
 cvtColor(img, img, CV_RGB2GRAY);
 img.setTo(0);
 rectangle(img, Rect(10, 10, 200, 200), CV_RGB(255, 255, 255), CV_FILLED );
 imshow("show1", img);
 

 Mat dst = Mat::zeros(img.rows, img.cols, CV_8UC3);


 vector< vector< Point> > contours;
 vector< Vec4i> hierarchy;

 findContours(img, contours, hierarchy,
  RETR_CCOMP, CHAIN_APPROX_SIMPLE);

 // iterate through all the top-level contours,
 // draw each connected component with its own random color
 int idx = 0;
 for (; idx >= 0; idx = hierarchy[idx][0])
 {
  Scalar color(rand() & 255, rand() & 255, rand() & 255);
  //drawContours(dst, contours, idx, color, FILLED, 8, hierarchy);
  drawContours(dst, contours, idx, color, 1, 8, hierarchy);
 }

 imshow("show2", dst);
 waitKey(0);

 return 0;
}
..

Comments

Popular posts from this blog

(OpenCV Study) Background subtractor MOG, MOG2, GMG example source code (BackgroundSubtractorMOG, BackgroundSubtractorMOG2, BackgroundSubtractorGMG)

OpenCV Stitching example (Stitcher class, Panorama)

AMP dose run on my pc?, AMP(Accelerated Massive Parallelism)

Example source code of extract HOG feature from images, save descriptor values to xml file, using opencv (using HOGDescriptor )

Optical Flow sample source code using OpenCV

Real-time N camera stitching Class.

OpenCV meanShiftFiltering example source code ( cpu: pyrMeanShiftFiltering, gpu:meanShiftFiltering, gpu:meanShiftSegmentation )

8 point algorithm (Matlab source code) / The method to get the Fundamental Matrix and the Essential matrix

Image warping (using opencv findHomography, warpPerspective)

Video Stabilization example source code, (using cvFindHomography, cvWarpPerspective functions in openCV)