zoukankan      html  css  js  c++  java
  • 直线、矩形、圆、椭圆、文字等绘制

     详细见代码:

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    
    using namespace cv;
    Mat bgImage;
    const char*drawdemo_win = "draw shapes and text demo";
    //注意调用函数,在main函数前声明函数。
    void MyLines();
    void MyRectangle();
    void MyEllipse();
    void MyCircle();
    void MyPolygon();
    
    int main(int argc, char** argv) {
        bgImage = imread("L:/4.jpg");
        if (!bgImage.data)
        {
            printf("could not load image...
    ");
            return -1;
        }
        MyLines();       //call MyLine()函数 
        MyRectangle();   //call MyRectangle()函数
        MyEllipse();     //call MyEllipse()函数
        MyCircle();      //call MyCircle()函数
        MyPolygon();     //call MyPolygon()函数 
    
        //图片上绘制文字
        putText(bgImage,"Hello Opencv",Point(300,300),CV_FONT_HERSHEY_COMPLEX,1.0,Scalar(12,23,200),3,8);
        //参数:1.目标图像  2.内容  3.左下角坐标 4.字体格式 5.字体大小 6.字体颜色 7.字体粗细   8.默认8
        namedWindow(drawdemo_win, CV_WINDOW_AUTOSIZE);
        imshow(drawdemo_win, bgImage);
        waitKey(0);
        return 0;
    }
    
    //直线函数
    void MyLines() {
        Point p1 = Point(20, 30);
        Point p2;
        p2.x = 300;
        p2.y = 300;
        Scalar color = Scalar(0, 0, 255);
        line(bgImage, p1, p2, color, 2, LINE_8);  //LINE_8为反锯齿线条
        //line的参数:1.写入图像  2.p1点  3.p2点  4.颜色  5.线条的粗细  6.线条的类型
    }
    
    //矩形函数
    void MyRectangle() {
        Rect rect = Rect(200, 100, 300, 300);
        //Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height)
        //定义一个左上角点坐标为(_x, _y)的_width*_height矩形窗口
        Scalar color = Scalar(255, 0, 0);
        rectangle(bgImage, rect, color, 2, LINE_8);
    }
    
    //椭圆函数
    void MyEllipse() {
        Scalar color = Scalar(0, 255, 0);
        ellipse(bgImage, Point(bgImage.cols / 2, bgImage.rows / 2), Size(bgImage.cols / 4, bgImage.rows / 8), 45, 0, 360, color, 2, LINE_8);
        //ellipse函数参数: 1. 绘制的目标图像   2.绘制椭圆的中心  3.绘制椭圆的长轴和短轴  4.椭圆的倾斜角度  5.6.线条的角度(弧)(0-360)  7.颜色  8.线条粗细 9.线条类型
     }
    
    //圆函数
    void MyCircle() {
        Scalar color = Scalar(0, 255, 255);
        Point center = Point(bgImage.cols / 2, bgImage.rows / 2);
        circle(bgImage, center, 150, color, 2, 8);
    // 圆参数:1.图像, 2.圆心 3.半径 4.颜色 5.圆周线条粗细 6.线条类型 }
    //多边形填充函数 void MyPolygon() { Point pts[1][5]; //定义一个五个点的数组二维 pts[0][0] = Point(100, 100); pts[0][1] = Point(100, 200); pts[0][2] = Point(200, 200); pts[0][3] = Point(200, 100); pts[0][4] = Point(100, 100); const Point*ppts[] = { pts[0] }; //ppts的指针指向pts[0]的数组 int npt[] = { 5 }; // 一维数组npt为5,代表5个点 Scalar color = Scalar(255, 0, 255); fillPoly(bgImage, ppts, npt, 1, color, 8); //fillPoly函数参数:1.输入图像 2.二维数组指针指向顶点 3.一维数组指针顶点个数 4. 多边形个数 5.填充颜色 6.line_type=8默认参数 }

    结果如图所示:

     

  • 相关阅读:
    javaWeb 使用jsp开发 if else 标签
    javaWeb 使用jsp开发 if 标签
    javaWeb 使用jsp标签进行防盗链
    javaWeb 在jsp中 使用自定义标签输出访问者IP
    javaWeb el表达式和jstl快速入门案例
    javaWeb 使用 jsp 和 javaBean 实现计算器功能
    javaWeb 使用cookie显示上次访问网站时间
    javaWeb 使用cookie显示商品浏览记录
    javaWeb request乱码处理
    ubunu下用命令设置壁纸
  • 原文地址:https://www.cnblogs.com/Jack-Elvis/p/11494332.html
Copyright © 2011-2022 走看看