• opencv3.2.0之绘图


    //描述:包含程序所使用的头文件和命名空间
    #include <opencv2/opencv.hpp>
    #include "opencv2/core/core.hpp"
    #include "highgui.h"
    #include "opencv2/imgproc/imgproc.hpp"


    using namespace cv;
    using namespace std;
    //宏定义部分
    #define WINDOW_NAME1 "[绘制图1]"
    #define WINDOW_NAME2 "[绘制图2]"
    #define WINDOW_WIDTH 600

    //绘制椭圆,代码分析:把图画在img上,在椭圆中心为(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),并且大小位于矩形(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16)内。旋转角度为angle,扩展的弧度为0到360度。默认染色是蓝色,线宽为2,线性为9
    void DrawEllipse(Mat img, double angle) {
    int thickness = 2;
    int lineType = 8;
    ellipse(img,
    Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),
    Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16),
    angle,
    0,
    360,
    Scalar(255, 129, 0),
    thickness,
    lineType);
    }

    //绘制实心圆,把图画在img上,圆中心为WINDOW_WIDTH / 32,Scalar(0, 0, 255)颜色为红色,线宽为2,线性为9
    void DrawFilledCircle(Mat img, Point center) {
    int thickness = -1;
    int lineType = 8;
    circle(img,
    center,
    WINDOW_WIDTH / 32,
    Scalar(0, 0, 255),
    thickness,
    lineType);
    }
    //主函数
    int main(void) {
    //创建空白的MAT图像
    Mat atomImage = Mat::zeros(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3);
    Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);
    //先绘制出椭圆
    DrawEllipse( atomImage,90);
    DrawEllipse(atomImage, 0);
    DrawEllipse(atomImage, 45);
    DrawEllipse(atomImage, -45);
    //再绘制圆心
    DrawFilledCircle(atomImage,Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2));
    //显示图像
    imshow(WINDOW_NAME1,atomImage);
    cvMoveWindow(WINDOW_NAME1,0,200);
    /*imshow(WINDOW_NAME2, rookImage);
    cvMoveWindow(WINDOW_NAME2, WINDOW_WIDTH, 200);*/
    waitKey(0);
    return 0;
    }

    注意:在编写函数时必须注意把函数写在主函数上,才能正确调用。

  • 相关阅读:
    JMS学习四(ActiveMQ消息过滤)
    JMS学习三(ActiveMQ消息的可靠性)
    JMS学习二(简单的ActiveMQ实例)
    JMS学习一(JMS介绍)
    Linux iostat监测IO状态
    git删除所有提交历史记录
    MySQL查看数据库相关信息
    Java面试通关要点汇总集
    java开发需掌握技能2
    java开发需掌握技能1
  • 原文地址:https://www.cnblogs.com/alpqmz/p/7502770.html
Copyright © 2020-2023  润新知