• 【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);
    }


                   作者:gnuhpc
                   出处:http://www.cnblogs.com/gnuhpc/
                   除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    监控里的主码流和子码流是什么意思
    监控硬盘容量计算
    一个能让你了解所有函数调用顺序的Android库
    电工选线
    oracle linux dtrace
    list all of the Oracle 12c hidden undocumented parameters
    Oracle Extended Tracing
    window 驱动开发
    win7 x64 dtrace
    How to Use Dtrace Tracing Ruby Executing
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2571323.html
Copyright © 2020-2023  润新知