【OpenCV学习】用绘图函数画一个奥运志愿者笑脸徽章

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

#include "highgui.h"
#include "cv.h"
#include <iostream>
#include <iomanip>

using namespace std;

#define thickness 2//线条粗细
#define line_type CV_AA//抗锯型直线

int main()
{
CvScalar color=CV_RGB(255,158,97);//按RGB顺序排列
CvPoint pt1_Rect,pt2_Rect;//确定对角线上的两点
CvPoint center;//确定笑脸中心
int radius=0;//笑脸的半径

//Eye
CvPoint center_l_eye;
CvPoint center_r_eye;//定义两眼的中心
CvSize axes_eye;//定义左右眼大小
double angle_l_eye=15;//左眼的偏转角,正数表示逆时针,附属为顺时针
double angle_r_eye=-15;

double start_angle_eye=0;
double end_angle_eye=360;

//Mouth
CvPoint pt1_l_mouth;
CvPoint pt2_l_mouth;
CvPoint pt1_r_mouth;
CvPoint pt2_r_mouth;//嘴角的点

CvSize axes_mouth;
double angle_mouth=0;

double start_angle_mouth=0;
double end_angle_mouth=360;

//画图初始化
IplImage *img=cvCreateImage(cvSize(600,600),IPL_DEPTH_8U,3);
cvNamedWindow("image",CV_WINDOW_AUTOSIZE);

//画外围边框
pt1_Rect.x=0;
pt1_Rect.y=0;
pt2_Rect.x=600;
pt2_Rect.y=600;
color=CV_RGB(97,158,255);
cvRectangle(img,pt1_Rect,pt2_Rect,color,CV_FILLED,line_type,0);

//笑脸的轮廓
color=CV_RGB(255,158,97);
center.x=300;
center.y=300;
radius=200;
cvCircle(img,center,radius,color,CV_FILLED,line_type,0);

//画眼睛
color=CV_RGB(156,25,255);
center_l_eye.x=240;
center_l_eye.y=200;
center_r_eye.x=360;
center_r_eye.y=200;
axes_eye.width=16;
axes_eye.height=30;
angle_l_eye=10;
angle_r_eye=-5;
start_angle_eye=0;
end_angle_eye=360;

cvEllipse(img,center_l_eye,axes_eye,angle_l_eye,start_angle_eye,end_angle_eye,
color,CV_FILLED,line_type,0);//画左眼
cvEllipse(img,center_r_eye,axes_eye,angle_r_eye,start_angle_eye,end_angle_eye,
color,CV_FILLED,line_type,0);//画右眼

//画嘴巴
pt1_l_mouth.y=300;
pt1_l_mouth.x=150;
pt2_l_mouth.y=270;
pt2_l_mouth.x=180;
pt1_r_mouth.y=270;
pt1_r_mouth.x=400;
pt2_r_mouth.y=300;
pt2_r_mouth.x=430;
axes_mouth.width=130;
axes_mouth.height=100;
start_angle_mouth=150;
end_angle_mouth=347;
angle_mouth=10;

//左右嘴角
cvLine(img,pt1_l_mouth,pt2_l_mouth,color,4,line_type,0);
cvLine(img,pt1_r_mouth,pt2_r_mouth,color,4,line_type,0);

//嘴巴的圆弧
cvEllipse(img,center,axes_mouth,angle_mouth,start_angle_mouth,
end_angle_mouth,color,4,line_type,0);
cvShowImage("image",img);
cvWaitKey(0);
cvSaveImage("smile.jpg",img);
cvReleaseImage(&img);
}
posted @ 2012-06-30 20:55  gnuhpc  阅读(1263)  评论(0编辑  收藏  举报