• opencv画基本几何形状和文字


    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    using namespace cv;
    using namespace std;
    
    //线
    void MyLines(Mat &bgImage)
    {
        Point p1 = Point(20, 30);
        Point p2;
        p2.x = 300;
        p2.y = 300;
        Scalar color = Scalar(0, 0, 255);
        //抗锯齿
        line(bgImage, p1, p2, color, 6, LINE_AA);
    
        putText(bgImage, "test", Point(300, 300), CV_FONT_HERSHEY_COMPLEX, 2.0, Scalar(255, 0, 0),3,8);
    }
    
    //矩形
    void MyRectangle(Mat& bgImage)
    {
        Rect rect = Rect(510, 30, 60, 60);
        Scalar color = Scalar(0, 255, 0);
        //抗锯齿
        rectangle(bgImage, rect, color,2, LINE_AA); 
    }
    
    //椭圆
    void MyEllipse(Mat& bgImag)
    {
        Scalar color = Scalar(0, 255, 0);
        //顺时针旋转45度,从0度画到360度
        ellipse(bgImag, Point(bgImag.cols / 2, bgImag.rows / 2), Size(bgImag.cols / 4, bgImag.rows / 8),45, 0, 360, color, 2, LINE_4);
    }
    
    //
    void MyCircle(Mat& bgImag)
    {
        Scalar color = Scalar(255, 0, 0);
        Point center = Point(bgImag.cols / 2, bgImag.rows / 2);
        circle(bgImag, center, 150, color, 2);
    }
    
    //多边形
    void MyPolygon(Mat& bgImag)
    {
        Point pts[2][5];
        pts[0][0] = Point(100, 100);
        pts[0][1] = Point(100, 300);
        pts[0][2] = Point(200, 200);
        pts[0][3] = Point(200, 100);
        pts[0][4] = Point(100, 100);
    
        pts[1][0] = Point(0, 100);
        pts[1][1] = Point(50, 300);
        pts[1][2] = Point(0, 200);
        pts[1][3] = Point(0, 100);
        pts[1][4] = Point(0, 100);
    
    
        //行指针 Point(*ppts)[]
        //元素指针
        const Point* ppts[2];
        ppts[0] = pts[0];
        ppts[1] = pts[1];
        int npt[2];
        npt[0] = 5;
        npt[1] = 5;
        Scalar color = Scalar(255, 12, 255);
    
        fillPoly(bgImag, ppts, npt, 1, color, 8);
        //fillPoly(bgImag, &ppts[1], npt, 1, color, 8);
    }
    
    //随机画线
    void randomLine(Mat& bgImag)
    {
        RNG rng(12345);
        Point pt1;
        Point pt2;
        Mat bg = Mat::zeros(bgImag.size(), bgImag.type());
        namedWindow("随机画线", CV_WINDOW_AUTOSIZE);
        while (1)
        {
            pt1.x = rng.uniform(0, bgImag.cols);
            pt2.x = rng.uniform(0, bgImag.cols);
    
            pt1.y = rng.uniform(0, bgImag.rows);
            pt2.y = rng.uniform(0, bgImag.rows);
    
            Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
    
            if (waitKey(50) > 0)
            {
                break;
            }
    
            line(bg, pt1, pt2, color, 1, 8);
            imshow("随机线条", bg);
        }
    }
    
    int main()
    {
        Mat src,dst;
        //原图
        src = imread(".//pic//kate.png",IMREAD_UNCHANGED);
        
        if (!src.data)
        {
            cout << "load error" << endl;
            return -1;
        }
        /*MyLines(src);
        MyRectangle(src);
        MyEllipse(src);
        MyCircle(src);
        MyPolygon(src);*/
        randomLine(src);
    
        namedWindow("demo", CV_WINDOW_AUTOSIZE);
        imshow("line", src);
    
        waitKey(0);
        return 0;
    }
  • 相关阅读:
    分治6--循环比赛日程表
    分治5--一元三次方程求解
    分治4--快速排序
    分治3--黑白棋子的移动
    分治2--取余运算
    分治1--二分查找
    贪心6--整数区间
    贪心5--活动选择
    贪心4--拦截导弹
    贪心3--删数问题
  • 原文地址:https://www.cnblogs.com/xiaochi/p/11995721.html
Copyright © 2020-2023  润新知