MAC IOS 用openCV 绘制简单图形

来源:互联网 发布:女生必知护肤技巧少女 编辑:程序博客网 时间:2024/05/17 07:48

在做开发的时候,在MAC 和IOS 平台上 实现绘制简单图形的方式有很多。这里简单说一下,使用OpenCV实现,在MAC与IOS平台上实现绘制简单的图形:直线、矩形、圆、椭圆等等。

直线

绘制直线,在openCV中实现绘制直线的函数为cvLine

结构:

void cvLine(//画直线  CvArr* array,//画布图像  CvPoint pt1,//起始点  CvPoint pt2,//终点  CvScalar color,//颜色  int thickness = 1,//宽度  int connectivity = 8//反走样);

实现的代码

{  IplImage *src1;  cvPoint(20,20),      cvPoint(250,250),      CV_RGB(255,0,0),      8);  cvShowImage( "原图", src1);  cvWaitKey();  return 0;}

绘制矩形 cvRectangle函数

结构

void cvRectangle(//画矩形  CvArr* array,//画布图形  CvPoint pt1,//起始点  CvPoint pt2,//终点  CvScalar color,//颜色  int thickness = 1,//宽度  1代表实心填充  0空心);

实现方法

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;

圆形cvCircle函数

结构

void cvCircle(//画圆  CvArr* array,//画布图像  CvPoint cevter,//圆心  int radius,//半径  CvScalar color,//颜色  int thickness = 1,//宽度 1代表实心填充  0空心  int connectivity = 8//反走样);

实现的方法

{  IplImage *src1;  src1 = cvLoadImage("10.jpg");  cvCircle(src1,cvPoint(150,150),100,CV_RGB(0,0,255),5);  cvShowImage( "原图", src1);  cvWaitKey();  return 0;}

椭圆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//);

实现的方法为

{  IplImage *src1;  src1 = cvLoadImage("10.jpg");      cvEllipse(src1,        cvPoint(150,150),        45,0,        360,        CV_RGB(255,0,0),        3);  cvShowImage( "原图", src1);  cvWaitKey();  return 0;}

绘制多边形

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);

代码实现

{  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;}

4、绘制文字cvPutText函数
结构

void cvPutText(//绘制文字  CvArr* img,//绘图图像  const char* text,//文字内容  CvPoint origin,//文字起始位置  const CvFont* font,//文字字体设置  CvScalar color//颜色);

代码实现

{  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;}
0 0
原创粉丝点击