OpenCV中可以绘制的图形有直线、矩形、多边形、圆、椭圆。以及一个写文本的函数puttext

1. 基本函数

Line

C++: void line(Mat& img, Point pt1,Point pt2, const Scalar& color, int thickness=1, int lineType=8,int shift=0)

Parameters:

img – 图像.

pt1 – 线条起点.

pt2 – 线条终点.

color – 线条颜色.

thickness – 线条宽度.

lineType – 线型

Type of the line:  8 (or omitted) - 8-连接线.

4 - 4-连接线.

CV_AA - 反走样线条.

shift – 坐标点小数点位数.

Rectangle

C++: void rectangle(Mat& img,Point pt1, Pointpt2, const Scalar&color, intthickness=1,intlineType=8, intshift=0)
C++: void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )

Parameters:

img – 画矩形的对象

pt1 – 矩形的一个顶点,左上角的.

pt2 – 另一个顶点,右下角的.

rec – 确定矩形的另一种方式,给左上角坐标和长宽

color – 指定矩形的颜色或亮度(灰度图像),scalar(255,0,255)既可指定.

thickness – 矩形边框的粗细. 负值(like CV_FILLED)表示要画一个填充的矩形

lineType – 边框线型. ( 8 (or 0) - 8-connected line(8邻接)连接线。

4 - 4-connected line(4邻接)连接线。

CV_AA - antialiased 线条。)

shift –坐标点的小数点位数

PolyLine

C++: void polylines(Mat& img, const Point** pts, const int* npts, int ncontours, bool isClosed, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
C++: void polylines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )

Parameters:

img – 折线所在图像.

pts – 折线中拐点坐标指针.

npts – 折线拐点个数指针.

ncontours – 折线线段数量.

isClosed – 折线是否闭合.

color – 折线颜色.

thickness – 折线宽度.

lineType – 线型.

shift – 顶点坐标小数点位数.

Circle

C++: void circle(Mat&img, Point center, intradius, const Scalar&color,intthickness=1, intlineType=8, intshift=0)

Parameters:

img – 要画圆的那个矩形.

center – 圆心坐标.

radius – 半径.

color – 圆边框颜色,scalar类型的

thickness – 正值表示圆边框宽度. 负值表示画一个填充圆形

lineType – 圆边框线型

shift – 圆心坐标和半径的小数点位数

Ellipse

C++: void ellipse(Mat& img, Point center,Size axes, double angle, double startAngle, double endAngle, const Scalar& color,int thickness=1, int lineType=8, int shift=0)
C++: void ellipse(Mat& img, constRotatedRect& box, const Scalar& color, int thickness=1, int lineType=8)

Parameters:

img – 椭圆所在图像.

center – 椭圆中心.

axes – 椭圆主轴一半的长度

angle – 椭圆旋转角度

startAngle – 椭圆弧起始角度

endAngle –椭圆弧终止角度

box – 指定椭圆中心和旋转角度的信息,通过 RotatedRect 或 CvBox2D. 这表示椭圆画在旋转矩形上(矩形是不可见的,只是指定了一个框而已)

color – 椭圆边框颜色.

thickness – 正值代表椭圆边框宽度,负值代表填充的椭圆

lineType – 线型

shift – 椭圆中心坐标和坐标轴的小数点位数

PutText

C++: void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false )

Parameters:

img – 显示文字所在图像.

text – 待显示的文字.

org – 文字在图像中的左下角 坐标.

font – 字体结构体.

fontFace – 字体类型, 可选择字体:

FONT_HERSHEY_SIMPLEX,                    FONT_HERSHEY_PLAIN,

FONT_HERSHEY_DUPLEX,                     FONT_HERSHEY_COMPLEX, 
          FONT_HERSHEY_TRIPLEX,                     FONT_HERSHEY_COMPLEX_SMALL, 
          FONT_HERSHEY_SCRIPT_SIMPLEX, or FONT_HERSHEY_SCRIPT_COMPLEX,

以上所有类型都可以配合 FONT_HERSHEY_ITALIC使用,产生斜体效果。

fontScale – 字体大小,该值和字体内置大小相乘得到字体大小

color – 文本颜色

thickness –  写字的线的粗细

lineType – 线型.

bottomLeftOrigin – true, 图像数据原点在左下角. Otherwise, 图像数据原点在左上角.

2. 一些参数取值情况

lineType:    8或0  8-连接线

4   4-连接线

CV_AA 反走样线条

thickness: >0,线条粗细   <0,填充

fontFace :

CV_FONT_HERSHEY_SIMPLEX                       正常尺寸sanserif字体
        CV_FONT_HERSHEY_PLAIN                            小尺寸sanserif字体
        CV_FONT_HERSHEY_DUPLEX                         正常尺寸sanserif, 比CV_FONT_HERSHEY_SIMPLEX更复杂
        CV_FONT_HERSHEY_COMPLEX                      正常尺寸serif, 比CV_FONT_HERSHEY_DUPLEX更复杂
        CV_FONT_HERSHEY_TRIPLEX                         正常尺寸serif, 比CV_FONT_HERSHEY_COMPLEX更复杂
        CV_FONT_HERSHEY_COMPLEX_SMALL        小尺寸的CV_FONT_HERSHEY_COMPLEX
        CV_FONT_HERSHEY_SCRIPT_SIMPLEX        手写风格
        CV_FONT_HERSHEY_SCRIPT_COMPLEX       比CV_FONT_HERSHEY_SCRIPT_SIMPLEX更复杂的风格

常见颜色RGB值对照表

R

G

B

R

G

B

R

G

B

黑色

0

0

0

#000000

黄色

255

255

0

#FFFF00

浅灰蓝色

176

224

230

#B0E0E6

象牙黑

41

36

33

#292421

香蕉色

227

207

87

#E3CF57

品蓝

65

105

225

#4169E1

灰色

192

192

192

#C0C0C0

镉黄

255

153

18

#FF9912

石板蓝

106

90

205

#6A5ACD

冷灰

128

138

135

#808A87

dougello

235

142

85

#EB8E55

天蓝

135

206

235

#87CEEB

石板灰

112

128

105

#708069

forum gold

255

227

132

#FFE384

暖灰色

128

128

105

#808069

金黄色

255

215

0

#FFD700

青色

0

255

255

#00FFFF

黄花色

218

165

105

#DAA569

绿土

56

94

15

#385E0F

白色

225

225

225

#FFFFFF

瓜色

227

168

105

#E3A869

靛青

8

46

84

#082E54

古董白

250

235

215

#FAEBD7

橙色

255

97

0

#FF6100

碧绿色

127

255

212

#7FFFD4

天蓝色

240

255

255

#F0FFFF

镉橙

255

97

3

#FF6103

青绿色

64

224

208

#40E0D0

白烟

245

245

245

#F5F5F5

胡萝卜色

237

145

33

#ED9121

绿色

0

255

0

#00FF00

白杏仁

255

235

205

#FFFFCD

桔黄

255

128

0

#FF8000

黄绿色

127

255

0

#7FFF00

cornsilk

255

248

220

#FFF8DC

淡黄色

245

222

179

#F5DEB3

钴绿色

61

145

64

#3D9140

蛋壳色

252

230

201

#FCE6C9

翠绿色

0

201

87

#00C957

花白

255

250

240

#FFFAF0

棕色

128

42

42

#802A2A

森林绿

34

139

34

#228B22

gainsboro

220

220

220

#DCDCDC

米色

163

148

128

#A39480

草地绿

124

252

0

#7CFC00

ghostWhite

248

248

255

#F8F8FF

锻浓黄土色

138

54

15

#8A360F

酸橙绿

50

205

50

#32CD32

蜜露橙

240

255

240

#F0FFF0

锻棕土色

135

51

36

#873324

薄荷色

189

252

201

#BDFCC9

象牙白

250

255

240

#FAFFF0

巧克力色

210

105

30

#D2691E

草绿色

107

142

35

#6B8E23

亚麻色

250

240

230

#FAF0E6

肉色

255

125

64

#FF7D40

暗绿色

48

128

20

#308014

navajoWhite

255

222

173

#FFDEAD

黄褐色

240

230

140

#F0E68C

海绿色

46

139

87

#2E8B57

old lace

253

245

230

#FDF5E6

玫瑰红

188

143

143

#BC8F8F

嫩绿色

0

255

127

#00FF7F

海贝壳色

255

245

238

#FFF5EE

肖贡土色

199

97

20

#C76114

雪白

255

250

250

#FFFAFA

标土棕

115

74

18

#734A12

紫色

160

32

240

#A020F0

乌贼墨棕

94

38

18

#5E2612

紫罗蓝色

138

43

226

#8A2BE2

红色

255

0

0

#FF0000

赫色

160

82

45

#A0522D

jasoa

160

102

211

#A066D3

砖红

156

102

31

#9C661F

马棕色

139

69

19

#8B4513

湖紫色

153

51

250

#9933FA

镉红

227

23

13

#E3170D

沙棕色

244

164

96

#F4A460

淡紫色

218

112

214

#DA70D6

珊瑚色

255

127

80

#FF7F50

棕褐色

210

180

140

#D2B48C

梅红色

221

160

221

#DDA0DD

耐火砖红

178

34

34

#B22222

印度红

176

23

31

#B0171F

蓝色

0

0

255

#0000FF

栗色

176

48

96

#B03060

钴色

61

89

171

#3D59AB

粉红

255

192

203

#FFC0CB

dodger blue

30

144

255

#1E90FF

草莓色

135

38

87

#872657

jackie blue

11

23

70

#0B1746

橙红色

250

128

114

#FA8072

锰蓝

3

168

158

#03A89E

蕃茄红

255

99

71

#FF6347

深蓝色

25

25

112

#191970

桔红

255

69

0

#FF4500

孔雀蓝

51

161

201

#33A1C9

深红色

255

0

255

#FF00FF

土耳其玉色

0

199

140

#00C78C

更全的RGB颜色对照表参见 :http://tool.oschina.net/commons?type=3

#include <iostream>
#include "cv.h"
#include "highgui.h"  using namespace std;
using namespace cv;  static void help()
{  cout << "This program demonstrates OpenCV drawing and text output functions" << endl   << "Usage:" << endl  <<"./drawing" << endl;
}  static Scalar randomColor(RNG& rng)
{  int iColor = unsigned(rng);  //255 = 0xFF  return Scalar(iColor & 255,(iColor >> 8) & 255,(iColor >> 16) & 255);    //产生一种颜色
}  int main(int argc,char** argv)
{  help();  char wndName[] = "Drawing Demo";  const int randomNumber = 100;  const int DELAY = 10;  int lineType = CV_AA;  int height = 700;  int width = 1000;  int x1 = - width/2;      //-500  int x2 = 3 * width/2;    //1500  int y1 = - height/2;     //-350  int y2 = 3 * height/2;   //1050  RNG rng(0xFFFFFFFF);  Mat image = Mat::zeros(height,width,CV_8UC3);  imshow(wndName,image);  waitKey(DELAY);  //draw line  for(int i = 0;i < randomNumber;i++)  {  Point pt1,pt2;  pt1.x = rng.uniform(x1,x2);  pt1.y = rng.uniform(y1,y2);  pt2.x = rng.uniform(x1,x2);  pt2.y = rng.uniform(y1,y2);  line(image,pt1,pt2,randomColor(rng),rng.uniform(1,10),lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  //draw rectangle  for(int i = 0;i < randomNumber;i++)  {  Point pt1,pt2;  pt1.x = rng.uniform(x1,x2);  pt1.y = rng.uniform(y1,y2);  pt2.x = rng.uniform(x1,x2);  pt2.y = rng.uniform(y1,y2);  int thickness = rng.uniform(-3,10);  /*----------------------draws a simple, thick, or filled up-right rectangle----------- *   C++: void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color,  int thickness=1, int lineType=8,int shift=0) *   C++: void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1,  int lineType=8, int shift=0) *   img – image *   pt1 – Vertex of the rectangle                    矩形的一个顶点p1 *   pt2 – Vertex of the rectangle opposite to pt1    矩形的另一个顶点,与p1相对 *   rec – Alternative specification of the drawn rectangle *   color – Rectangle color or brightness (grayscale image)      线条颜色,对于灰度图是亮度 *   thickness – Thickness of lines that make up the rectangle. Negative values,   线条粗细 like CV_FILLED, mean that the function has to draw a filled rectangle *   lineType – Type of the line. See the line() description       线条类型 *   shift – Number of fractional bits in the point coordinates     -----------------------------------------------------------------------------*/  rectangle(image,pt1,pt2,randomColor(rng),MAX(thickness,-1),lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  //draw ellipse  for(int i = 0; i < randomNumber;i++)  {  Point center;  center.x = rng.uniform(x1,x2);  center.y = rng.uniform(y1,y2);  Size axes;  axes.width = rng.uniform(0,200);  axes.height = rng.uniform(0,200);  double angle = rng.uniform(0,180);  /*---------draws a simple or thick elliptic arc or fills an ellipse sector--------- *   C++: void ellipse(Mat& img, Point center, Size axes, double angle,  double startAngle,double endAngle,const Scalar& color,  int thickness=1, int lineType=8, int shift=0) *   C++: void ellipse(Mat& img, const RotatedRect& box, const Scalar& color,  int thickness=1, int lineType=8) *   img – image  *   center – Center of the ellipse 椭圆中心 *   axes – Half of the size of the ellipse main axes 椭圆长轴的一半 *   angle – Ellipse rotation angle in degrees 椭圆旋转的角度 *   startAngle – Starting angle of the elliptic arc in degrees 弧度开始的角度 *   endAngle – Ending angle of the elliptic arc in degrees 弧度结束的角度 *   box – Alternative ellipse representation via RotatedRect or CvBox2D This means that the function draws an ellipse inscribed in the rotated rectangle *   color – Ellipse color *   thickness – Thickness of the ellipse arc outline, if positive. Otherwise, this indicates that a filled ellipse sector is to be drawn *   lineType – Type of the ellipse boundary. See the line() description *   shift – Number of fractional bits in the coordinates of the center and values of axes -----------------------------------------------------------------------------*/  ellipse(image,center,axes,angle,angle - 100,angle + 200,randomColor(rng),rng.uniform(1,8),lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  //draw polylines  for(int i = 0;i < randomNumber;i++)  {  Point pt[2][3];  pt[0][0].x = rng.uniform(x1,x2);  pt[0][0].y = rng.uniform(y1,y2);  pt[0][1].x = rng.uniform(x1,x2);  pt[0][1].y = rng.uniform(y1,y2);  pt[0][2].x = rng.uniform(x1,x2);  pt[0][2].y = rng.uniform(y1,y2);  pt[1][0].x = rng.uniform(x1,x2);  pt[1][0].y = rng.uniform(y1,y2);  pt[1][1].x = rng.uniform(x1,x2);  pt[1][1].y = rng.uniform(y1,y2);  pt[1][2].x = rng.uniform(x1,x2);  pt[1][2].y = rng.uniform(y1,y2);  const Point* ppt[2] = {pt[0],pt[1]};  int npt[] = {3,3};  /*-------------------draws several polygonal curves---------------------------- *   C++: void polylines(Mat& img, const Point** pts, const int* npts, int ncontours,  bool isClosed, const Scalar& color, int thickness=1, int lineType=8, int shift=0 ) *   C++: void polylines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed,  const Scalar& color,int thickness=1, int lineType=8, int shift=0 ) *   img – image *   pts – Array of polygonal curves 多边形曲线数组 *   npts – Array of polygon vertex counters 顶点数组 *   ncontours – Number of curves 曲线数量 *   isClosed – Flag indicating whether the drawn polylines are closed or not If they are closed,the function draws a line from the last vertex  of each curve to its first vertex 标志曲线是否闭合 *   color – Polyline color *   thickness – Thickness of the polyline edges *   lineType – Type of the line segments. See the line() description *   shift – Number of fractional bits in the vertex coordinates  -----------------------------------------------------------------------------*/  polylines(image,ppt,npt,2,TRUE,randomColor(rng),rng.uniform(1,10),lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  //draw polygons with filled area  for(int i = 0;i < randomNumber;i++)  {  Point pt[2][3];  pt[0][0].x = rng.uniform(x1, x2);  pt[0][0].y = rng.uniform(y1, y2);  pt[0][1].x = rng.uniform(x1, x2);  pt[0][1].y = rng.uniform(y1, y2);  pt[0][2].x = rng.uniform(x1, x2);  pt[0][2].y = rng.uniform(y1, y2);  pt[1][0].x = rng.uniform(x1, x2);  pt[1][0].y = rng.uniform(y1, y2);  pt[1][1].x = rng.uniform(x1, x2);  pt[1][1].y = rng.uniform(y1, y2);  pt[1][2].x = rng.uniform(x1, x2);  pt[1][2].y = rng.uniform(y1, y2);  const Point* ppt[2] = {pt[0], pt[1]};  int npt[] = {3, 3};  /*--------------fills the area bounded by one or more polygons--------------- *   C++: void fillPoly( Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int lineType=8, int shift=0, Point offset=Point() ) *   img – image *   pts – Array of polygons where each polygon is represented as an array of points *   npts – Array of polygon vertex counters *   ncontours – Number of contours that bind the filled region *   color – Polygon color *   lineType – Type of the polygon boundaries. See the line() description *   shift – Number of fractional bits in the vertex coordinates *   offset – Optional offset of all points of the contours -----------------------------------------------------------------------------*/  fillPoly(image, ppt, npt, 2, randomColor(rng), lineType);  imshow(wndName, image);  if(waitKey(DELAY) >= 0)  return 0;  }  //draw circle  for(int i = 0;i < randomNumber;i++)  {  Point center;  center.x = rng.uniform(x1,x2);  center.y = rng.uniform(y1,y2);  /*-----------------------------draw a circle---------------------------------- *   C++: void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8,int shift=0) *   img – Image where the circle is drawn *   center – Center of the circle *   radius – Radius of the circle *   color – Circle color *   thickness – Thickness of the circle outline, if positive. Negative thickness means that a *   filled circle is to be drawn *   lineType – Type of the circle boundary. See the line() description *   shift – Number of fractional bits in the coordinates of the center and  in the radius value -----------------------------------------------------------------------------*/  circle(image,center,rng.uniform(0,300),randomColor(rng),rng.uniform(-1,9),lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  //put text on the image  for(int i = 0;i < randomNumber;i++)  {  Point org;  org.x = rng.uniform(x1,x2);  org.y = rng.uniform(y1,y2);  putText(image,"Testing text rendering",org,rng.uniform(0,8)/*font type*/,  rng.uniform(0,100)*0.05 + 0.1/*font scale*/,  randomColor(rng),rng.uniform(1,10)/*thickness*/,lineType);  imshow(wndName,image);  if(waitKey(DELAY) >= 0)  return 0;  }  /*------------------calculates the width and height of a text string-------------- *   C++: Size getTextSize( const string& text, int fontFace, double fontScale, int thickness, int* baseLine) *   text – Input text string *   fontFace – Font to use. See the putText() for details *   fontScale – Font scale. See the putText() for details *   thickness – Thickness of lines used to render the text *   baseLine – Output parameter - y-coordinate of the baseline relative  to the bottom-most text point. --------------------------------------------------------------------------------------*/  //string text = " OpenCV Forever!" ;  //int fontFace = FONT_HERSHEY_COMPLEX;  //double fontScale = 2;  //int thickness = 3;  //int baseline=0;  //baseline += thickness;  //Size textSize = getTextSize(text, fontFace,  //                      fontScale, thickness, &baseline);  Size textSize = getTextSize("OpenCV Forever!",FONT_HERSHEY_COMPLEX,3,5,0);  Point org((width - textSize.width)/2,(height - textSize.height)/2);  Mat image2;  for(int i = 0;i < 255;i += 2)  {  image2 = image - Scalar::all(i);  putText(image2,"OpenCV Forever!",org,FONT_HERSHEY_COMPLEX,  3,Scalar(i,i,255),5,lineType);  imshow(wndName,image2);  if(waitKey(DELAY) >= 0)  return 0;  }  waitKey();  return 0;
}  

2.

/**
* @file Drawing_1.cpp
* @brief Simple sample code
*/  #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>  #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( void ){  /// 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, w/2) );  /// 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 ),  Point( w, w),  Scalar( 0, 255, 255 ),  -1,  8 );  RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30);  ellipse(rook_image, rRect, Scalar(255,255,0));  /// 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 );  moveWindow( atom_window, 0, 200 );  imshow( rook_window, rook_image );  moveWindow( 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, w/2 ),  Size( w/4, w/16 ),  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,  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,   7*w/8 );  rook_points[0][1]  = Point(  3*w/4,   7*w/8 );  rook_points[0][2]  = Point(  3*w/4,  13*w/16 );  rook_points[0][3]  = Point( 11*w/16, 13*w/16 );  rook_points[0][4]  = Point( 19*w/32,  3*w/8 );  rook_points[0][5]  = Point(  3*w/4,   3*w/8 );  rook_points[0][6]  = Point(  3*w/4,     w/8 );  rook_points[0][7]  = Point( 26*w/40,    w/8 );  rook_points[0][8]  = Point( 26*w/40,    w/4 );  rook_points[0][9]  = Point( 22*w/40,    w/4 );  rook_points[0][10] = Point( 22*w/40,    w/8 );  rook_points[0][11] = Point( 18*w/40,    w/8 );  rook_points[0][12] = Point( 18*w/40,    w/4 );  rook_points[0][13] = Point( 14*w/40,    w/4 );  rook_points[0][14] = Point( 14*w/40,    w/8 );  rook_points[0][15] = Point(    w/4,     w/8 );  rook_points[0][16] = Point(    w/4,   3*w/8 );  rook_points[0][17] = Point( 13*w/32,  3*w/8 );  rook_points[0][18] = Point(  5*w/16, 13*w/16 );  rook_points[0][19] = Point(    w/4,  13*w/16 );  const Point* ppt[1] = { rook_points[0] };  int npt[] = { 20 };  fillPoly( img,  ppt,  npt,  1,  Scalar( 255, 255, 255 ),  lineType );
}  /**
* @function MyLine
* @brief Draw a simple line
*/
void MyLine( Mat img, Point start, Point end )
{  int thickness = 2;  int lineType = 8;  line( img,  start,  end,  Scalar( 0, 0, 0 ),  thickness,  lineType );
}  

opencv绘制基本图形及文字相关推荐

  1. python opencv 绘制简单图形

    09-python opencv 绘制简单图形 09-python opencv 绘制简单图形 概述 实现过程 引用与创建空图 绘制直线 绘制矩形 绘制圆 绘制椭圆 添加文字 显示图像 源代码 运行结 ...

  2. 【学习OpenCV4】OpenCV绘制标记/线/矩形/文字/圆等

    本文分享内容来自图书<学习OpenCV 4:基于Python的算法实战>,该书内容如下: 第1章 OpenCV快速入门: 第2章 图像读写模块imgcodecs: 第3章 核心库模块cor ...

  3. IOS 绘制基本图形(画文字、图片水印)

    - (void)drawRect:(CGRect)rect {// Drawing code// [self test]; // 1.加载图片到内存中UIImage *image = [UIImage ...

  4. OpenCV——绘制基本图形

    1.代码如下: #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include&l ...

  5. python中用于绘制各种图形、标注文本_python ImageDraw类实现几何图形的绘制与文字的绘制...

    python PIL图像处理模块中的ImageDraw类支持各种几何图形的绘制和文本的绘制,如直线.椭圆.弧.弦.多边形以及文字等. 下面直接通过示例来进行说明: #-*- coding: UTF-8 ...

  6. 番外3. Python OpenCV 中如何绘制各种图形?

    本系列专栏写作方式 本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级.中级.高级知识. 3. Python OpenCV 中如何绘制各种图形? 本篇博客主要分享一下在 P ...

  7. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等

    Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形

  8. [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. 详解用OpenCV绘制各类几何图形

    本文分享自华为云社区<[Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形>,作者:eastmount. 一.绘制直线 在OpenCV中,绘制直线需要获取直线的起 ...

最新文章

  1. 常用地理数据平台及环境数据资源 (GIS)
  2. csapp:无符号数可能造成的程序bug
  3. apache hive_通过6个简单的步骤在Windows上运行Apache Hive
  4. ubunt11 安装mysql_ubuntu 11.10安装mysql
  5. perl里面隐式的继承
  6. python创建类和类方法
  7. python编写自动化脚本工具_Python自动化构建工具scons使用入门笔记
  8. git push 出现 you are not allowed to upload merges 错误提示
  9. c语言中变量后减号大于号,大于等于运算符.ppt
  10. kepware omronFINS
  11. 网络安全-技术与实践 书本习题练习
  12. 高德地图 聚合效果
  13. 信息安全领域四大顶会
  14. Ubuntu Samba高危安全漏洞修复
  15. 关于应用RestHighLevelClient操作ElasticSearch出现“远程主机强迫关闭一个现有连接”的问题探究
  16. 微信小程序开发学习5(自定义组件)
  17. android手机设置固定dns,手机dns怎么设置 简单几步就搞定
  18. 使用Golang编写Android应用
  19. java properties文件 变量_properties文件和环境变量
  20. 设计,看上去很美 wayfarer

热门文章

  1. 基于Keare的交通标志识别
  2. mysql数据 锁 隔离级别_MySQL数据库事务各隔离级别加锁情况--read uncommitted篇
  3. Mac 配置CocoaPods
  4. 为什么神经网络被称为黑匣子
  5. 概率论与数理统计——随机事件及其概率
  6. 《白话机器学习的数学》基础知识梳理 基于python的代码实现
  7. no main manifest attribute, in ./XXX.jar,如何解决?
  8. windchill11 安装遇到的问题
  9. 阻碍你前程发展的,不一定是能力,有可能是这个
  10. 在cmd下用cd命令进不了D盘的问题