OpenCV 笔记(3):基本图形的绘制

Part11.  绘制简单的图形

绘图功能是 OpenCV 最基础的功能,OpenCV 提供了基础的绘制函数,用于帮助我们绘制一些基本的图形。通过这些函数的组合,我们也可以做一些高级的应用。

11.1 绘制点和圆

OpenCV 的绘制函数相对简单,而且很多参数很类似,所以介绍第一个函数时会详细地介绍各个参数的含义,后面就不做特别详细的介绍了。

我们先来看点和圆的绘制:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main(int argc,char *argv[])
{
    Mat image = Mat::zeros(Size(800, 800), CV_8UC3);
    image.setTo(255);// 设置屏幕为白色

    Point p1(100, 100);
    Point p2(200, 200);
    Point p3(300, 300);
    Point p4(400, 400);
    Point p5(500, 500);
    Point p6(600, 600);
    Point p7(700, 700);

    circle(image, p1, 4, Scalar(0, 0, 255), -1);  // 画半径为4的圆(画点)

    circle(image, p2, 60, Scalar(255, 0, 0), 2);  // 画半径为60的圆

    circle(image, p3, 60, Scalar(0, 255, 0), -1);

    circle(image, p4, 60, Scalar(255, 255, 0), 5);

    circle(image, p5, 60, Scalar(255, 0, 255), -1);

    circle(image, p6, 60, Scalar(0, 255, 255), 2);

    circle(image, p7, 60, Scalar(0, 0, 0), -1);

    imshow("src", image);

    waitKey(0);
    return 0;
}
a779d7e5bcfac88f5b5cc6ef079fb386.jpeg
绘制点和圆.png

我们主要使用 circle() 函数来绘制点和圆。

CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius,
                       const Scalar& color, int thickness = 1,
                       int lineType = LINE_8, int shift = 0);

其各个参数的含义:

第一个参数 img:输入的源图像。 第二个参数 center:圆心的坐标。 第三个参数 radius:圆的半径。 第四个参数 color:圆形的颜色。 第五个参数 thickness:如果是正数,表示组成圆的线条的粗细程度。如果是负数,表示圆被填充。 第六个参数 lineType:线条的类型。OpenCV 提供了三种类型的线条,它们都是 LineTypes 枚举类型。

  • LINE_4 :4,表示四连接线。

  • LINE_8 :8,表示八连接线。

  • LINE_AA :16,表示抗锯齿线。使用它会产生更好的绘图质量,图像看起来会非常平滑,但是绘制速度较慢。

第七个参数 shift:圆心坐标点和半径值的小数点位数。

这里很多的参数,在本文后续的函数中都会用到。

21.2 绘制直线

直线跟圆的区别是,直线需要2个点来确定位置。下面是绘制直线的例子:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main(int argc,char *argv[])
{
    Mat image = Mat::zeros(Size(800, 800), CV_8UC3);
    image.setTo(255);// 设置屏幕为白色

    Point
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值