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

简介:
#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);
}

本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/06/30/2571323.html,如需转载请自行联系原作者
目录
打赏
0
0
0
0
46
分享
相关文章
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
920 1
Opencv学习笔记(六):cv2.resize函数的介绍
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
1697 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
173 2
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
115 0
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
435 2
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
94 4
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等