七、简单绘图函数

本文介绍了如何使用OpenCV库在图像上绘制直线、圆和矩形。详细讲解了函数参数,包括起点和终点坐标、颜色、线条宽度、线型和填充方式。并提供了代码示例,展示了如何创建空心圆、实心圆以及不同类型的矩形。这些基本图形绘制功能是计算机视觉和图像处理项目中的常用操作。
摘要由CSDN通过智能技术生成

1、直线

函数:void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)

参数介绍:

1.img: 要绘制线段的图像。
2.pt1: 线段的起点。
3.pt2: 线段的终点。
4.color: 线段的颜色,通过一个Scalar对象定义。
5.thickness: 线条的宽度。
6.lineType: 线段的类型。可以取值8,4, 和CV_AA, 分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接。为了获得更好地效果可以选用CV_AA(采用了高斯滤波)。
7.shift: 坐标点小数点位数。

demo:

line(img,Point(10,10),Point(200,200),Scalar(0,0,255),5,CV_AA);

2、画圆函数.(空心圆和实心圆)

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

参数介绍:

1、img:用于画图的图像。

2、center :圆心的位置。

3、radius:半径。

4、color:颜色。

5、thickness:如果为正——圆形轮廓的粗细、负值——表示要绘制实心圆。

6、lineType:圆边界的类型。

7、shift:中心坐标和半径值中的小数位数。

eg:

#include<iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;

int main() {
    //创建图像
    Mat img = Mat::zeros(Size(520, 520), CV_8UC3);
    //绘制空心圆
    circle(img, Point(img.cols / 2, img.rows / 2), 100, Scalar(255, 0, 0), 2);
    //绘制空心圆
    circle(img, Point(img.cols / 2, img.rows / 2), 80, Scalar(0,150, 0), -2);

    imshow("img",img);
    waitKey();
    destroyAllWindows();

    return 0;
}

运行结果:

 


3、矩形

函数:(有两种方法)

1):

void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0);

2):

void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 );
参数介绍:

img 图像。
pt1 矩形的一个顶点。
pt2 矩形对角线上的另一个顶点。
rec 矩形区域(x,y,width,height)。
color 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image。
thickness 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。
line_type 线条的类型;见cvLine的描述。
shift 坐标点的小数点位数。

rectangle (src, cv::Rect(10,10,50,50), Scalar(0, 0, 255), -1, 8, 0);
rectangle (src, Point(9, 9), Point(61, 61), Scalar(0, 255, 255), 2, 8, 0);
#include<iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;

int main() {
    //创建图像
    Mat img = Mat::zeros(Size(520, 520), CV_8UC3);

    rectangle(img, Rect(20, 20, 100,100), Scalar(200, 0, 150), -1, 8, 0);
    rectangle(img, Point(9, 7), Point(180, 200), Scalar(0, 150, 150), 2, 8, 0);

    imshow("img",img);
    waitKey();
    destroyAllWindows();

    return 0;
}

运行结果:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值