ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图像几何形状绘制

2022-01-24 15:31:45  阅读:188  来源: 互联网

标签:center img image 图像 Scalar 几何 circle 绘制 ellipse


绘制圆形

circle(img, center, radius, color, thickness)
  • img:需要绘制的图像
  • center:圆形的圆心位置坐标
  • radius:圆形的半径,单位为像素
  • color:圆形的颜色
  • thickness:轮廓的粗细,若为负值,则绘制一个实心圆

绘制矩形

// 原型一
rectangle(img, pt1, pt2, color, thickness)

// 原型二
rectangle(img, rec, color, thickness)
  • pt1:矩形的一个顶点

  • pt2:矩形中与pt1相对的顶点,即两个点在对角线上

  • rec:矩形左上角顶点和长宽

Rect变量在 OpenCV 4 中表示矩形的含义,与Point、Vec3b等类型相同,都是在图像处理中常用的类型。Rect表示的是矩形左上角像素坐标,以及矩形的长和宽,该类型定义的格式为Rect(像素的x坐标,像素的y坐标, 矩形的宽,矩形的高),其中可以存放的数据类型也分别为int型(Rect2i或者Rect)、double类型(Rect2d)和float类型(Rect2f)

绘制直线

line(img, pt1, pt2, color, thickness)
  • pt1:直线起点在图像中的坐标
  • pt2:直线终点在图像中的坐标
  • color:直线的颜色,用三通道表示

绘制椭圆

ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness)
  • center:椭圆的中心坐标
  • axes:椭圆的长轴和短轴长度
  • angle:椭圆的旋转角度,单位为度
  • startAngle:椭圆弧的起始角度,单位为度
  • endAngle:椭圆弧的终止角度,单位为度

:通过椭圆弧起始和终止角度,可以绘制完整的椭圆或一部分椭圆弧

添加文本

putText(img, text, org, fontFace, fontScale, color, thickness)
  • text:输出到图像中的文字,类型为string,目前只支持英文

  • org:指定文本字符串左上角的起始位置

  • fontFace:字体样式,可选参数如下:

    标志 取值 含义
    FONT_HERSHEY_SIMPLEX 0 正常大小的无衬线字体
    FONT_HERSHEY_PLAIN 1 小尺寸的无衬线字体
    FONT_HERSHEY_DUPLEX 2 正常大小的较复杂的无衬线字体
    FONT_HERSHEY_COMPLEX 3 正常大小的衬线字体
    FONT_HERSHEY_TRIPLEX 4 正常大小的较复杂的衬线字体
    FONT_HERSHEY_COMPLEX_SMALL 5 小尺寸的衬线字体
    FONT_HERSHEY_SCRIPT_SIMPLEX 6 手写风格的字体
    FONT_HERSHEY_SCRIPT_COMPLEX 7 复杂的手写风格字体
    FONT_ITALIC 16 斜体字体
  • fontScale:字体的大小,类型为 double

  • color:字体颜色,类型为 Scalar

示例代码

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat_<Vec3b> img = imread("/home/kslas/OpenCV/sample.jpg");
    imshow("Original Image", img);

    /* Draw the image from point A to B */
    Mat_<Vec3b> line_image = img.clone();
    Point pointA(200,80);
    Point pointB(450,80);
    line(line_image, pointA, pointB, Scalar(255, 255, 0), 3);
    imshow("Line on Image", line_image);

    /* Draw a circle using the circle() Function */
    Mat_<Vec3b> circle_image = img.clone();
    // define the center of circle
    Point circle_center(415,190);
    // define the radius of circle
    int radius = 100;
    circle(circle_image, circle_center, radius, Scalar(0, 0, 255), 3);
    imshow("Circle on Image", circle_image);

    Mat_<Vec3b> Filled_circle_image = img.clone();
    circle(Filled_circle_image, circle_center, radius, Scalar(255, 0, 0), -1);
    imshow("Filled Circle on Image", Filled_circle_image);

    /* Draw a rectangle using the rectangle() function */
    Mat_<Vec3b> rect_image = img.clone();
    // Define the starting and end points for the rectangle
    Point start_point(300,115);
    Point end_point(475,225);
    rectangle(rect_image, start_point, end_point, Scalar(0,0,255), 3);
    imshow("Rectangle on Image", rect_image);

    /* Draw an ellipse using the ellipse() function */
    Mat_<Vec3b> imageEllipse = img.clone();
    // define the center point of ellipse
    Point ellipse_center(415,190);
    // define the major and minor axes of the ellipse
    Point axis1(100, 50);
    Point axis2(125, 50);
    //Horizontal
    ellipse(imageEllipse, ellipse_center, axis1, 0, 0, 360, Scalar(255, 0, 0), 3);
    // Vertical
    ellipse(imageEllipse, ellipse_center, axis2, 90, 0, 360, Scalar(0, 0, 255), 3);
    imshow("Ellipses on Image", imageEllipse);

    /* draw the Half Ellipse, just the outline */
    Mat_<Vec3b> halfEllipse = img.clone();
    ellipse(halfEllipse, ellipse_center, axis1, 0, 180, 360, Scalar(255, 0, 0), 3);
    // if you want to draw a Filled ellipse, use this line of code
    ellipse(halfEllipse, ellipse_center, axis1, 0, 0, 180, Scalar(0, 0, 255), -2);
    imshow("Half-Ellipses on Image", halfEllipse);

    /* Write text using putText() function */
    Mat_<Vec3b> imageText = img.clone();
    putText(imageText, "I am a Happy dog!", Point(50,350), FONT_HERSHEY_COMPLEX, 1.5, Scalar(250,225,100));
    imshow("Text on Image", imageText);

    waitKey(0);
    destroyAllWindows();
    return 0;
}

运行结果:

标签:center,img,image,图像,Scalar,几何,circle,绘制,ellipse
来源: https://www.cnblogs.com/TNTksals/p/15839592.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有