opencv各种绘图 直线 矩形 圆 椭圆

画图函数

(1)直线cvLine函数

其结构

void cvLine(//画直线
  CvArr* array,//画布图像
  CvPoint pt1,//起始点
  CvPoint pt2,//终点
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int connectivity = 8//反走样
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvLine(src1,cvPoint(20,20),cvPoint(250,250),CV_RGB(255,0,0),8);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果


(2)矩形cvRectangle函数

其结构

void cvRectangle(//画矩形
  CvArr* array,//画布图形
  CvPoint pt1,//起始点
  CvPoint pt2,//终点
  CvScalar color,//颜色
  int thickness = 1,//宽度
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvRectangle(src1,cvPoint(20,20),cvPoint(200,200),CV_RGB(0,255,0),8);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果


(3)圆形cvCircle函数

其结构

void cvCircle(//画圆
  CvArr* array,//画布图像
  CvPoint cevter,//圆心
  int radius,//半径
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int connectivity = 8//反走样
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvCircle(src1,cvPoint(150,150),100,CV_RGB(0,0,255),5);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果


(4)椭圆cvEllipse函数

其结构

void cvEllipse(//画椭圆
  CvArr* img,//画布图像
  CvPoint center,//中心点
  CvSize axes,//长短轴
  double angle,//偏离主轴角度
  double start_angle,//弧线開始位置
  double end_angle,//弧线结束位置
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int line_type = 8//
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1;
  src1 = cvLoadImage("10.jpg");
  
  cvEllipse(src1,cvPoint(150,150),cvSize(150,50),45,0,360,CV_RGB(255,0,0),3);

  cvShowImage( "原图", src1);
  cvWaitKey();
  return 0;
}
输出结果


(5)多边形函数

1.cvFillPoly函数

其结构

void cvFillPoly(//画多个实心多边形
  CvArr* img,//画布图像
  CvPoint** pts,//点序列
  int* npt,//计数点数组
  int contours,//显示几个多边形
  CvScalar color,//颜色
  int line_type = 8
);
2.cvFillConvexPoly函数

其结构

void cvFillConvexPoly(//画一个实心多边形
  CvArr* img,//画布图像
  CvPoint* pts,//点序列
  int npt,//计数点数组
  CvScalar color,//颜色
  int line_type = 8
);
3.cvPolyLine函数
void cvFillPoly(//画多个空心多边形
  CvArr* img,//画布图像
  CvPoint** pts,//点序列
  int* npt,//计数点数组
  int contours,//显示几个多边形
  int is_closed,//是否从上个多边形尾点開始
  CvScalar color,//颜色
  int thickness = 1,//宽度
  int line_type = 8
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1,*src2,*src3;
  src1 = cvLoadImage("7.jpg");
  src2 = cvLoadImage("8.jpg");
  src3 = cvLoadImage("9.jpg");

  int arr[3]= {4,4,4};   

  CvPoint ** pt =new CvPoint*[3];

  pt[0] = new CvPoint[4];  
  pt[0][0] = cvPoint(10,10);  
  pt[0][1] = cvPoint(210,10);  
  pt[0][2] = cvPoint(210,210);  
  pt[0][3] = cvPoint(10,210);  
  pt[1] = new CvPoint[4]; 
  pt[1][0] = cvPoint(10,310);  
  pt[1][1] = cvPoint(210,310);  
  pt[1][2] = cvPoint(210,510);  
  pt[1][3] = cvPoint(10,510);  
  pt[2] = new CvPoint[4]; 
  pt[2][0] = cvPoint(310,10);  
  pt[2][1] = cvPoint(410,10);  
  pt[2][2] = cvPoint(410,210);  
  pt[2][3] = cvPoint(310,210);  

  cvPolyLine(src1, pt, arr, 3, 1, CV_RGB(0,255,0),5);  

  cvFillPoly(src2, pt,arr,3,CV_RGB(250,0,0));  

  cvFillConvexPoly(src3,pt[0],4,CV_RGB(0,0,255));

  cvShowImage( "原图1", src1);
  cvShowImage( "原图2", src2);
  cvShowImage( "原图3", src3);
  cvWaitKey();
  return 0;
}
输出结果


(6)绘制文字cvPutText函数

其结构

void cvPutText(//绘制文字
  CvArr* img,//画图图像
  const char* text,//文字内容
  CvPoint origin,//文字起始位置
  const CvFont* font,//文字字体设置
  CvScalar color//颜色
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
  IplImage *src1,*src2,*src3;
  src1 = cvLoadImage("10.jpg");

  char* str = "I am a student!";

  CvFont* cf = new CvFont();

  cvInitFont(cf,CV_FONT_HERSHEY_SIMPLEX,1.0,0.5);

  cvPutText(src1,str,cvPoint(50,100),cf,CV_RGB(255,0,0));

  cvShowImage( "原图1", src1);
  cvWaitKey();
  return 0;
}
输出结果


to be continued 

原文地址:https://www.cnblogs.com/blfbuaa/p/7397589.html