zoukankan      html  css  js  c++  java
  • 【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 中国大陆”许可协议授权。


    分享到:

  • 相关阅读:
    Eclipse下载
    Java为什么需要基本类型
    今日学到乱写
    图解HTTP——阅读笔记
    HashMap以及ConcurrentHashMap
    别个代码阅读学习(一)
    nodeJs配置相关以及JSON.parse
    数据库设计那些事儿
    数据库特训系列1——基础拾遗
    机器学习之词语识别——记录
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2571323.html
Copyright © 2011-2022 走看看