Opencv绘图之rectangle、circle、line、ellipse、Rect、RotatedRect、Point

news/2024/6/17 0:14:10 标签: opencv, 人工智能, 计算机视觉

OpenCV中提供了多种函数来在图像上绘制各种基本形状,如矩形、圆形、线条、椭圆等。同时,RectRotatedRect是用来表示矩形区域的类,它们在图像处理中非常有用,尤其是在需要定义和操作图像区域时。Point类用于表示二维空间中的一个点。这个类在处理图像或绘图时非常有用,比如标定图像中的位置、定义形状的顶点等。

1.Point类

Point类有几个不同的变体,其中Point_<T>是一个模板类,它允许你使用任何数值类型(如intfloatdouble等)来表示点的坐标。最常用的变体是Point(等同于Point_<int>,用整数坐标表示)和Point2f(等同于Point_<float>,用浮点数坐标表示)。

// 使用整数坐标定义一个点
Point pt1(10, 20);

// 使用浮点数坐标定义一个点
Point2f pt2(10.5f, 20.5f);

点的加减

可以将两个点相加或相减,得到一个新的点。

Point pt3 = pt1 + Point(5, 5); // 将pt1向右下方移动5个单位
Point pt4 = pt1 - Point(5, 5); // 将pt1向左上方移动5个单位

与标量的运算

Point pt5 = pt1 * 2;  // 将pt1的坐标值放大2倍
Point pt6 = pt1 / 2;  // 将pt1的坐标值缩小2倍

应用

在图像处理和计算机视觉中,Point类经常与其他OpenCV函数一起使用,比如在图像上绘制图形、标定特定区域、计算形状的几何属性等。

// 创建一个空白图像
Mat image = Mat::zeros(Size(400, 400), CV_8UC3);

// 在图像上绘制一个圆,使用Point类指定圆心位置
circle(image, Point(200, 200), 50, Scalar(255, 0, 0), -1);

// 显示图像
imshow("Circle", image);
waitKey(0);

2.Rect类

用于表示图像中的矩形区域。

Rect(int x, int y, int width, int height);
  • x, y:矩形左上角的坐标。
  • width, height:矩形的宽度和高度。

3.RotatedRect类

用于表示旋转的矩形。

RotatedRect(const Point2f& center, const Size2f& size, float angle);
  • center:旋转矩形的中心点。
  • size:矩形的尺寸(宽度和高度)。
  • angle:矩形相对于水平轴的旋转角度。

4. 绘制矩形:rectangle

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • pt1:矩形的一个顶点。
  • pt2:矩形对角线上的另一个顶点。
  • color:矩形颜色。
  • thickness:边框的厚度。负值(如FILLED)表示填充矩形。
  • lineType:线条的类型,如LINE_8(8-connected line)。

5.绘制圆形:circle

void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • center:圆心坐标。
  • radius:圆的半径。
  • color:圆的颜色。

6.绘制线条:line

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • pt1, pt2:线条的起点和终点。
  • color:线条的颜色。

7.绘制椭圆:ellipse

void ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • center:椭圆的中心点。
  • axes:椭圆的主轴和次轴长度。
  • angle:椭圆的旋转角度。
  • startAngle,endAngle:椭圆弧的起始和结束角度。

8.小例子

8//图像几何图像绘制
void QuickDemo::draw_demo(Mat &image) {
	Rect rect;
	rect.x = 100;
	rect.y = 100;
	rect.width = 150;
	rect.height = 200;
	Mat bg = Mat::zeros(image.size(), image.type());
	rectangle(bg, rect, Scalar(0, 0, 255), 5, 8, 0);
	circle(bg, Point(250, 300), 15, Scalar(255, 0, 0), 5, 8, 0);
	line(bg, Point(100, 100), Point(250, 300), Scalar(0, 255, 0), 5, 8, 0);
	RotatedRect rrt;
	rrt.center = Point(180, 190);
	rrt.size = Size(50, 100);
	rrt.angle = 90.0;
	ellipse(bg, rrt, Scalar(0, 255, 255), -1, 8);
	Mat dst;
	addWeighted(image, 0.3, bg, 0.7, 0, dst);
	imshow("bg", bg);
	imshow("dst", dst);
}

在这里插入图片描述


http://www.niftyadmin.cn/n/5390403.html

相关文章

【JavaEE】_synchronized关键字——监视器锁monitor lock

目录 1. synchronized的特性 2. synchronized的使用 3. Java标准库中的线程安全类 1. synchronized的特性 &#xff08;1&#xff09;互斥&#xff1a; 前文已经介绍&#xff0c;某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象&…

#LLM入门|Prompt#1.1 第一部分_面向开发者的LLM入门教程_简介

Prompt工程&#xff1a;解锁大语言模型潜能的关键技巧 随着大语言模型&#xff08;LLM&#xff09;的兴起&#xff0c;Prompt工程已成为开发者利用LLM构建功能强大应用的关键技能。在这个新时代&#xff0c;Prompt不仅是指导LLM的输入形式&#xff0c;更是塑造其能力上限与下限…

基于java+springboot+vue实现的美食信息推荐系统(文末源码+Lw)23-170

1 摘 要 使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发…

cesium 高德路网数据加载到WGS-84坐标系,解决偏移问题

首先用到cesium.map.min.js 修改cesium.map.min.js中数据类型的瓦片路径 比如类型是img 搜索M.GCJ02ToWGS84&#xff0c;初步定位&#xff0c;确定是火星坐标系转wGS-84&#xff0c;然后修改 var S{img:"//webst{s}.is.autonavi.com/appmaptile?style6&x{x}&y{y…

华为配置WLAN AC和AP之间VPN穿越示例

配置WLAN AC和AP之间VPN穿越示例 组网图形 图1 配置WLAN AC和AP之间VPN穿越示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户接入WLAN网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响…

猫头虎分享已解决Bug || Kotlin Error: Unresolved reference: name

猫头虎分享已解决Bug || Java Error: Exception in thread ‘main’ java.lang.NullPointerException &#x1f431;‍&#x1f4bb;&#x1f50d; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1…

【JS逆向学习】补环境代理(Proxy)方法

自动化吐环境 本文主要是实现一个自动化吐环境的方法&#xff0c;对 Proxy 和 Reflect 不太了解的朋友可以阅读文章Javascript之Proxy、Reflect&#xff0c;里面对 Proxy 和 Reflect 做了简单介绍 代理单个对象 window new Proxy(window, {set(target, property, value, re…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…