美文网首页OpenCv
与OpenCV的第五天

与OpenCV的第五天

作者: Code_r_Wang | 来源:发表于2017-01-20 20:48 被阅读157次

    第一件事:OpenCV 基本图形绘制

    1. ellipse 函数(绘制椭圆)

    函数原型:

    void ellipse(InputOutputArray img, Point center, Size axes,
                            double angle, double startAngle, double endAngle,
                            const Scalar& color, int thickness = 1,
                            int lineType = LINE_8, int shift = 0);
    
    参数 解释
    InputOutPutArray img 在 img 图像上绘制
    Point center 椭圆中心
    Size axes axes 大小的矩形内切
    double angle 旋转角度
    double startAngle 开始绘制的角度
    double endAngle 结束绘制的角度
    Scalar& color 颜色
    int thickness 线条厚度
    lineType 线条边缘类型(LINE_4(边缘像素采用4连通,即上下左右),LINE_8(边缘像素采用8连通,即上下左右还有四个对角),LINE_AA(边缘像素采用高斯滤波,抗锯齿))
    shift 坐标点的小数点位数

    示例程序

    #include <iostream>
    #include <opencv2/opencv.hpp>
    int main(int argc, const char * argv[]) {
        cv::Mat img = cv::imread("1.jpg");
        int thickness = 2;
        cv::ellipse(img, cv::Point(img.cols/2, img.rows/2), cv::Size(img.cols/4, img.rows/8), 0.0, 0.0, 360.0, cv::Scalar(255,129,0),thickness,cv::LINE_AA);
        cv::imshow("img", img);
        cv::waitKey();
        return 0;
    }
    
    ellipse 函数示例程序运行效果图

    2. circle 函数(绘制实心圆)

    函数原型:

    void circle(InputOutputArray img, Point center, int radius,
                           const Scalar& color, int thickness = 1,
                           int lineType = LINE_8, int shift = 0);
    
    参数 解释
    InputOutPutArray img 在 img 图像上绘制
    Point center 圆心
    int radius 半径
    Scalar& color 颜色
    int thickness 线条厚度
    lineType 线条边缘类型(LINE_4(边缘像素采用4连通,即上下左右),LINE_8(边缘像素采用8连通,即上下左右还有四个对角),LINE_AA(边缘像素采用高斯滤波,抗锯齿))
    shift 坐标点的小数点位数

    示例程序

    #include <iostream>
    #include <opencv2/opencv.hpp>
    int main(int argc, const char * argv[]) {
        cv::Mat img = cv::imread("1.jpg");
        int thickness = 1;
        
        cv::circle(img, cv::Point(img.cols/2,img.rows/2), 100, cv::Scalar(255,0,0),thickness,cv::LINE_AA);
        
        cv::imshow("img", img);
        cv::waitKey();
    }
    
    circle 函数示例程序运行效果图

    3. polygon 函数(绘制多边形)

    函数原型:

    void fillPoly(Mat& img, const Point** pts,
                             const int* npts, int ncontours,
                             const Scalar& color, int lineType = LINE_8, int shift = 0,
                             Point offset = Point() );
    
    参数 解释
    InputOutPutArray img 在 img 图像上绘制
    Point**pts 二维顶点数组(每一个一维数组代表一个多边形顶点集)
    int* npts 每个多边形的顶点数
    int ncontours 多边形数量
    Scalar& color 颜色
    lineType 线条边缘类型(LINE_4(边缘像素采用4连通,即上下左右),LINE_8(边缘像素采用8连通,即上下左右还有四个对角),LINE_AA(边缘像素采用高斯滤波,抗锯齿))
    shift 坐标点的小数点位数
    offset 多边形偏移量

    示例程序

    #include <iostream>
    #include <opencv2/opencv.hpp>
    int main(int argc, const char * argv[]) {
        cv::Mat img = cv::imread("1.jpg");
        
        cv::Point rookPoints[] = {cv::Point(img.cols/4,img.rows*3/4),cv::Point(img.cols/4,img.rows/4),cv::Point(img.cols*3/4,img.rows*3/4)};
        const cv::Point* points[1]  = {rookPoints};
        int npts[1] = {3};
        cv::fillPoly(img, points, npts, 1, cv::Scalar(255,0,0),cv::LINE_AA);
        
        cv::imshow("img", img);
        cv::waitKey();
    }
    
    polygon 函数示例程序运行效果图

    4. line 函数(绘制线)

    函数原型:

    void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,
                         int thickness = 1, int lineType = LINE_8, int shift = 0);
    
    参数 解释
    InputOutPutArray img 在 img 图像上绘制
    Point pt1 端点1
    Point pt2 端点2
    Scalar& color 颜色
    int thickness 线条厚度
    lineType 线条边缘类型(LINE_4(边缘像素采用4连通,即上下左右),LINE_8(边缘像素采用8连通,即上下左右还有四个对角),LINE_AA(边缘像素采用高斯滤波,抗锯齿))
    shift 坐标点的小数点位数

    示例程序:

    #include <iostream>
    #include <opencv2/opencv.hpp>
    int main(int argc, const char * argv[]) {
        cv::Mat img = cv::imread("1.jpg");
        int thickness = 5;
        cv::line(img, cv::Point(img.cols/8,img.rows/2), cv::Point(img.cols*7/8,img.rows/4), cv::Scalar(255,0,0),thickness,cv::LINE_AA);
        cv::imshow("img", img);
        cv::waitKey();
    }
    
    line 函数示例程序运行效果图

    相关文章

      网友评论

        本文标题:与OpenCV的第五天

        本文链接:https://www.haomeiwen.com/subject/ypawbttx.html