• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签: OpenCV  扫描转换  

资源简介

OpenCV绘图示例代码 参考博客:http://blog.csdn.net/xiaowei_cqu/article/details/7693985 图形生成算法:多边形的扫描转换

资源截图

代码片段和文件信息

/**
 * @file Drawing_1.cpp
 * @brief Simple sample code
 */

#include 
#include 

#define w 400

using namespace cv;

/// Function headers
void MyEllipse( Mat img double angle );
void MyFilledCircle( Mat img Point center );
void MyPolygon( Mat img );
void MyLine( Mat img Point start Point end );

/**
 * @function main
 * @brief Main function
 */
int main( int argc char **argv ){

  /// Windows names
  char atom_window[] = “Drawing 1: Atom“;
  char rook_window[] = “Drawing 2: Rook“;

  /// Create black empty images 
  Mat atom_image = Mat::zeros( w w CV_8UC3 );
  Mat rook_image = Mat::zeros( w w CV_8UC3 );

  /// 1. Draw a simple atom:
  /// -----------------------

  /// 1.a. Creating ellipses 
  MyEllipse( atom_image 90 );
  MyEllipse( atom_image 0 );
  MyEllipse( atom_image 45 );
  MyEllipse( atom_image -45 );

  /// 1.b. Creating circles
  MyFilledCircle( atom_image Point( w/2.0 w/2.0) );

  /// 2. Draw a rook
  /// ------------------

  /// 2.a. Create a convex polygon
  MyPolygon( rook_image );

  /// 2.b. Creating rectangles
  rectangle( rook_image
     Point( 0 7*w/8.0 )
     Point( w w)
     Scalar( 0 255 255 )
     -1
     8 );

  /// 2.c. Create a few lines 
  MyLine( rook_image Point( 0 15*w/16 ) Point( w 15*w/16 ) );
  MyLine( rook_image Point( w/4 7*w/8 ) Point( w/4 w ) );
  MyLine( rook_image Point( w/2 7*w/8 ) Point( w/2 w ) );
  MyLine( rook_image Point( 3*w/4 7*w/8 ) Point( 3*w/4 w ) );

  /// 3. Display your stuff!
  imshow( atom_window atom_image );
  cvMoveWindow( atom_window 0 200 );
  imshow( rook_window rook_image );
  cvMoveWindow( rook_window w 200 );

  waitKey( 0 );
  return(0);
}

/// Function Declaration

/**
 * @function MyEllipse
 * @brief Draw a fixed-size ellipse with different angles
 */
void MyEllipse( Mat img double angle )
{
  int thickness = 2;
  int lineType = 8;

  ellipse( img
   Point( w/2.0 w/2.0 )
   Size( w/4.0 w/16.0 )
   angle
   0 
   360
   Scalar( 255 0 0 )
   thickness
   lineType );  
}

/**
 * @function MyFilledCircle
 * @brief Draw a fixed-size filled circle
 */
void MyFilledCircle( Mat img Point center )
{
  int thickness = -1;
  int lineType = 8;

  circle( img 
  center
  w/32.0
  Scalar( 0 0 255 )
  thickness 
  lineType );
}

/**
 * @function MyPolygon
 * @function Draw a simple concave polygon (rook)
 */
void MyPolygon( Mat img )
{
  int lineType = 8;

  /** Create some points */
  Point rook_points[1][20];
  rook_points[0][0] = Point( w/4.0 7*w/8.0 );
  rook_points[0][1] = Point( 3*w/4.0 7*w/8.0 );
  rook_points[0][2] = Point( 3*w/4.0 13*w/16.0 );
  rook_points[0][3] = Point( 11*w/16.0 13*w/16.0 );
  rook_points[0][4] = Point( 19*w/32.0 3*w/8.0 );
  rook_points[0][5] = Point( 3*w/4.0 3*w/8.0 );
  rook_points[0][6] = Point( 3*w/4.0 w/8.0 );
  rook_points[0][7] = Point( 26*w/40.0 w/8.0 );
  rook_points[0][8] = Point( 26*w/40.0 w/4.0 );
  rook_po

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3936  2011-07-18 17:29  Drawing_1.cpp
     文件        8006  2011-07-18 17:29  Drawing_2.cpp

评论

共有 条评论