【OpenCV 例程200篇】212. 绘制倾斜的矩形

OpenCV 例程200篇 总目录


【youcans 的 OpenCV 例程200篇】212. 绘制倾斜的矩形

7.1 绘图函数基本参数

OpenCV提供了绘图功能,可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。


函数原型:

函数 cv.rectangle() 用来在图像上绘制垂直于图像边界的矩形。

cv.rectangle(img, pt1, pt2, color[, thickness=1, lineType=LINE_8, shift=0]) → img

参数说明:

  • img:输入输出图像,允许单通道灰度图像或多通道彩色图像
  • pt1:矩阵第一个点的坐标,(x1, y1) 格式的元组
  • pt2:与 pt1 成对角的矩阵第二个点的坐标,(x2, y2) 格式的元组
  • color:绘图线条的颜色,(b,g,r) 格式的元组,或者表示灰度值的标量
  • thickness:绘制矩形的线宽,默认值 1px,负数表示矩形内部填充
  • lineType:绘制线段的线性,默认为 LINE_8

例程 A4.3:在图像上绘制倾斜的矩形

cv.rectangle 只能在图像上绘制垂直于边界的矩形。如果需要绘制倾斜的矩形,则要获得倾斜矩形的各个顶点坐标,通过绘制直线构造成为闭合的矩形。

    # A4.3 在图像上绘制倾斜的矩形height, width, channels = 600, 400, 3img = np.ones((height, width, channels), np.uint8)*192  # 创建黑色图像 RGB=0# 围绕矩形中心旋转x, y, w, h = (100, 200, 200, 100)  # 左上角坐标 (x,y), 宽度 w,高度 hcx, cy = x+w//2, y+h//2  # 矩形中心img1 = img.copy()cv.circle(img1, (cx,cy), 4, (0,0,255), -1)  # 旋转中心angle = [15, 30, 45, 60, 75, 90]  # 旋转角度,顺时针方向for i in range(len(angle)):ang = angle[i] * np.pi / 180x1 = int(cx + (w/2)*np.cos(ang) - (h/2)*np.sin(ang))y1 = int(cy + (w/2)*np.sin(ang) + (h/2)*np.cos(ang))x2 = int(cx + (w/2)*np.cos(ang) + (h/2)*np.sin(ang))y2 = int(cy + (w/2)*np.sin(ang) - (h/2)*np.cos(ang))x3 = int(cx - (w/2)*np.cos(ang) + (h/2)*np.sin(ang))y3 = int(cy - (w/2)*np.sin(ang) - (h/2)*np.cos(ang))x4 = int(cx - (w/2)*np.cos(ang) - (h/2)*np.sin(ang))y4 = int(cy - (w/2)*np.sin(ang) + (h/2)*np.cos(ang))color = (30*i, 0, 255-30*i)cv.line(img1, (x1,y1), (x2,y2), color)cv.line(img1, (x2,y2), (x3,y3), color)cv.line(img1, (x3,y3), (x4,y4), color)cv.line(img1, (x4,y4), (x1,y1), color)# 围绕矩形左上顶点旋转x, y, w, h = (200, 200, 200, 100)  # 左上角坐标 (x,y), 宽度 w,高度 himg2 = img.copy()cv.circle(img2, (x, y), 4, (0,0,255), -1)  # 旋转中心angle = [15, 30, 45, 60, 75, 90, 120, 150, 180, 225]  # 旋转角度,顺时针方向for i in range(len(angle)):ang = angle[i] * np.pi / 180x1, y1 = x, yx2 = int(x + w * np.cos(ang))y2 = int(y + w * np.sin(ang))x3 = int(x + w * np.cos(ang) - h * np.sin(ang))y3 = int(y + w * np.sin(ang) + h * np.cos(ang))x4 = int(x - h * np.sin(ang))y4 = int(y + h * np.cos(ang))color = (30 * i, 0, 255 - 30 * i)cv.line(img2, (x1, y1), (x2, y2), color)cv.line(img2, (x2, y2), (x3, y3), color)cv.line(img2, (x3, y3), (x4, y4), color)cv.line(img2, (x4, y4), (x1, y1), color)plt.figure(figsize=(9, 6))plt.subplot(121), plt.title("img1"), plt.axis('off')plt.imshow(cv.cvtColor(img1, cv.COLOR_BGR2RGB))plt.subplot(122), plt.title("img2"), plt.axis('off')plt.imshow(cv.cvtColor(img2, cv.COLOR_BGR2RGB))plt.show()

例程结果:

在这里插入图片描述



【本节完】

版权声明:
参考文献: Use the Photoshop Levels adjustment (adobe.com)
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125432101)
Copyright 2022 youcans, XUPT
Crated:2022-6-20
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

210. 绘制直线也会有这么多坑?
211. 绘制垂直矩形
212. 绘制倾斜的矩形

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java注释的理解,java注解原理——记录一下自己的理解

最近因为系统可能要更换成java语言,于是每天都在拼命的研究java的相关知识和框架。之前学习注解的时候,没有太深入的去理解它,只是觉得标注一下挺好用,但是现在在学到spring aop的时候,突然发现注解的功能是如此强大。…

Jsoup从元素中抽取属性 文本和HTML

在解析获得一个Document实例对象,并查找到一些元素之后,我们如何取得在这些元素中的数据呢??? 使用Jsoup抽取属性,一般方法如下: 1.要取得一个属性的值,可以使用Node.attr(String k…

CSDN 技能树使用体验与产品分析(1)

文章目录1. 什么是技能树2. 技能树的产品结构3. 技能树的使用3.1 产品入口3.2 知识点的模块设置3.3 『练习题』模块3.4 『参考资料』模块3.5 『讨论区』与『笔记』模块4. 结束语C 站近期隆重推出了一个新产品『技能树』,这是一个很好的方向。 很早就想写一篇介绍和…

【OpenCV 例程200篇】213. 绘制圆形

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】213. 绘制圆形 7.1 绘图函数基本参数 OpenCV提供了绘图功能,可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。 7.3 绘制圆形 函数原型: 函数 cv.circle() 用来在图像上绘制圆形。 cv…

Jsoup处理URLs

我们在处理HTML内容时,可能经常会遇到这种问题,需要将html页面里面的链接地址从相对地址转换成绝对地址,如何使用Jsoup来解决这个问题呢? 方法 在你解析文档时确保有指定base URI,然后 使用 abs: 属性前缀来取得包含b…

matlab的fft点数,matlab fft的点数问题

看完下面的,也许你会明白点The FFT functions (fft, fft2, fftn, ifft, ifft2, ifftn) are based on a library called FFTW [3],[4]. To compute an N-point DFT when N is composite (that is, when NN1N2), the FFTW library decomposes the problem using the C…

【OpenCV 例程200篇】214. 绘制椭圆的参数详解

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】214. 绘制椭圆的参数详解 OpenCV提供了绘图功能,可以在图像上绘制直线、矩形、圆、椭圆等各种几何图形。 7.4 绘制椭圆 函数原型: 函数 cv.ellipse() 用来在图像上绘制椭圆轮廓、填充椭圆、椭…

mysql外键猫头,SQL进阶

SQL进阶1.约束之主键约束非空、唯一、被引用当表的某一列被指定为主键之后,该列就不能为空,不能有重复值出现。创建表时指定主键的两种方式:CREATE TABLE stu1(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),age INT,gender VARCHAR(10));指定s…

Jsoup获取所有链接

从一个URL获得一个页面。然后提取页面中的所有链接、图片和其它辅助内容。并检查URLs和文本信息。 运行下面程序需要指定一个URLs作为参数 package org.jsoup.examples;import org.jsoup.Jsoup; import org.jsoup.helper.Validate; import org.jsoup.nodes.Document; import …

【OpenCV 例程200篇】215. 基于多段线绘制近似椭圆

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】215. 基于多段线绘制近似椭圆 如果需要对椭圆渲染进行更多控制,或者绘制粗略的椭圆边界,可以使用 cv.ellipse2Poly 检索曲线,然后使用多段线进行渲染或使用fillPoly进行填充。 函数…

【OpenCV 例程200篇】216. 绘制多段线和多边形

专栏地址:『youcans 的 OpenCV 例程200篇』 文章目录:『youcans 的 OpenCV 例程200篇-总目录』 【youcans 的 OpenCV 例程200篇】216. 绘制多段线和多边形 函数 cv.polylines() 用来绘制多边形曲线或多段线。 函数 cv.fillPoly() 用来绘制一个或多个填充…

Jsoup设置属性值

在处理html时,我们有时候可能想在解析一个Document之后修改其中的某些属性值,如图片地址、class名称等各种属性,然后再保存到磁盘或都输出到前台页面。 可以使用属性设置方法 Element.attr(String key, String value), 和 Elements.attr(St…

matlab mat文件 太大,MATLAB .mat文件中的开销过大

这对我来说似乎是个错误.解决方法是以块的形式写入预分配的数组.从预先分配开始:fid fopen(01_hit12.par, r);data fread(fid, inf, uint8);nlines nnz(data 10) 1;fclose(fid);matObj.moleculeNumber zeros(1,nlines,uint8);matObj.isotopeologueNumber zer…

Jsoup设置一个元素的HTML内容

获取一个元素中的HTML内容&#xff0c;可以使用Element中的HTML设置方法。 示例 Element div doc.select("div").first(); // <div></div> div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p><…

【youcans 的图像处理学习课】总目录

专栏地址&#xff1a;『youcans 的图像处理学习课』 【youcans 的图像处理学习课】总目录 youcansqq.com, 【youcans 的图像处理学习课】 更新日期&#xff1a;2022-06-30 本系列是学习冈萨雷斯《数字图像处理&#xff08;第四版&#xff09;》的笔记&#xff0c;篇目也是对照…

mysql数据库连接异常,mysql连接数据库时处理连接异常

连接数据库时处理连接异常 $db new PDO(‘mysql:hostlocalhost;dbnametest’, $user, $pass);$rs $db->query(“SELECT aa,bb,cc FROM foo”);if ($db->errorCode() ! ’00000′){print_r($db->errorInfo());exit;}$arr $rs->fetchAll();print_r($arr);$db nul…

【OpenCV 例程200篇】217. 鼠标交互获取多边形区域(ROI)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】217. 鼠标交互获取多边形区域 函数 cv.selectROI 可以通过鼠标在图像上选择感兴趣的矩形区域&#xff08;ROI&#xff0c;region of interest&#xff09;。 如果要通过鼠标在图像上选择感兴趣的多边形区域&#xff0c…

Jsoup设置元素的文本内容

修改一个HTML文档中的文本内容。 示例如下 Element div doc.select("div").first(); // <div></div> div.text("five > four"); // <div>five > four</div> div.prepend("First "); div.append(" Last&qu…

php+分针和时针重合,时钟问题—两针重合

​ 时钟问题—两针重合含义&#xff1a;钟面上的分针追上时针与之重合。这种追击&#xff0c;总是分针追时针&#xff0c;追击速度为分针每分钟前进的6度减去时针每分钟前进的0.5度&#xff0c;等于5.5度。由于钟面是圆形&#xff0c;追击分为分针在后和在前两种情况&#x…

【OpenCV 例程200篇】218. 多行倾斜文字水印

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】218. 多行倾斜文字水印 8.1 添加多行倾斜文字水印 水印是叠加在图像上的标志、签名、文本或图案&#xff0c;用于保护图像的版权。 先在黑色背景上添加图像或文字制作水印&#xff0c;再使用 cv.addWeight 函数&…