树莓派应用--AI项目实战篇来啦-5.OpenCV绘画函数的使用

news2024/11/23 13:44:57

1. 介绍

        OpenCV作为一款功能强大的计算机视觉库,被广泛地应用于图像处理和计算机视觉领域。
除了在机器视觉和人工智能领域有者广泛的应用,OpenCV 还能够媲美艺术家的创造力,通过其强大的绘图函数,绘制出令人叹为观止的艺术画作。
        OpenCV中的绘图函数为我们提供了丰富多样的工具,能够绘制出各种形状和效果。例如,我们可以使用线条函数画出细腻的轮廓,使用填充函数给图像增添色彩和渐变效果,使用文本函数添加文字说明等等。这些绘图函数结合起来,让我们能够在图像中创造出各种想象力丰富的人物形象。
        除了线条和填充函数,OpenCV 还提供了文本函数,可以方便地在图像中添加文字说明或者签名。我们可以选择合适的字体、大小和位置, 我们的艺术画作增添独特的个性和风格。
        OpenCV 提供了丰富多样的绘图函数,赋予了我们绘制令人叹为观止的艺术画作的能力。通过灵活运用这些函数,我们可以创造出多样化、创新化的艺术形象。当然,艺术创作需要艺术家自身的创造力和个性的体现,OpenCV 只是辅助工具之一。无论如何,OpenCV 为我们打造艺术画作提供了更为便捷和丰富的方式和可能性,这也是现代科技给艺术创作带来的一大进步。

2. 操作步骤

1)画线

        要画一条线,只需要告诉函数这条线的起点和终点。即可画一条从左上方到右下角的线段。

cv2.line(image,starting cordinates, ending cordinates, color, thickness)
# 载入库
import cv2
import numpy as np
from matplotlib import pyplot as plt

# 画一条5像素的对角蓝线
image = np.zeros((512,512,3), np.uint8)
#cv2.line(image, (startposition), (endposition), (Farbe der Linie), Linienbreite)
cv2.line(image, (0,0), (511,511), (255,127,0), 5)
cv2.line(image, (511,0), (0,511), (255,127,0), 5)

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('Blue Line')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

2) 画矩形

        要画一个矩形,需要告诉函数的左上角顶点和右下角顶点的坐标。

# 绘制一个矩形
image = np.zeros((512,512,3), np.uint8)
# eine negative Linienbreite füllt das viereck aus
cv2.rectangle(image, (100,100), (300,250), (127,50,127), -1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('Rectangle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

3) 画圆

       要面圆的话,只需要指定圆形的中心点坐标和半径大小。

cv2.cirlce(image, center, radius, color, fill)
image = np.zeros((512,512,3), np.uint8)
#cv2.circle(image, (Zentrum), Radius, (15,75,50), -1) 
cv2.circle(image, (350, 350), 100, (15,75,50), 10) 
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('Circle')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

4) 画椭圆

        画椭圆比较复杂,我们要多输入几个参数。

        一个参数是中心点的位置坐标。另一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是0和360,就是整个椭圆。查看cv2.ellipse()可以得到更多信息。

image = np.zeros((512,512,3), np.uint8)
cv2.ellipse(image,(256,256),(100,50),0,0,180,255,-1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('ellipse')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

5) 画多边形

        画多边形,需要指定每个顶点的坐标。用这些点的坐标构建一个大小等于行数X1,X2的数组,行数就是点的数目。这个数组的数据类型必须为int32。

image = np.zeros((512,512,3), np.uint8)

# 让我们定义四个点
pts = np.array( [[10,50], [400,50], [90,200], [50,500]], np.int32)

print(pts.shape)
# 现在让我们定义折线
pts = pts.reshape((-1,1,2))
print(pts.shape)

cv2.polylines(image, [pts], True, (0,0,255), 3)

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('Polygon')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

6)在图片上添加文字

        要在图片上绘制文字,需要设置下列参数:
        •要绘制的文字
        •你要绘制的位置
        •字体类型(通过查看cv2.putText()的文档找到支持的字体)
        • 字体的大小
        •文字的一般属性如颜色,粗细,线条的类型等。
        为了更好看一点推荐使用 linetype=cv2. LINE_AA。

image = np.zeros((512,512,3), np.uint8)

cv2.putText(image, 'Hello World!', (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3)

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image),plt.title('Hello World!')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

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

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

相关文章

【ICESat-2(Ice, Cloud and land Elevation Satellite-2)简介】

ICESat-2(Ice, Cloud and land Elevation Satellite-2),即冰、云和陆地高程卫星2号,是美国国家航空航天局(NASA)的一项重要卫星任务,旨在测量地球冰盖、云层以及陆地的高度变化。以下是对ICESat…

phpstorm+phpstudy 配置xdebug(无需开启浏览器扩展)

今天又被xdebug折磨了,忘记了以前咋配置了现在百度发现好多都是各种浏览器扩展而且也没有真正的用到项目上的都是测试的地址怎么样的 我就简单写一下自己实战吧 不支持workerman swoole hyperf等这种服务框架 如果你会请教教我 工具版本phpstudy8.1.xphpstorm2021.x…

用SpringBoot给Servlet容器Tomcat打war包步骤

首先写一个类来代替启动类 先在SpringBoot项目里打开pom.xml导入依赖,原本SpringBoot里面spring-boot-starter-web依赖里面有Tomcat,所以我们要先在spring-boot-starter-web里面导入依赖,把Tomcat给排除掉,并且加上你要打的war类型依赖 然后先刷新,再清除,最后再打包 成功之后,…

华为云Flexus云服务:性能倍增、体验跃级

在数字化转型的浪潮中,企业对云计算的需求日益增长,尤其是在性能和体验方面。华为云Flexus云服务应运而生,为企业提供了一个性能倍增、体验跃级的云计算解决方案。下面九河云就来给大家介绍一下华为云Flexus云服务吧。 1. 性能倍增 华为云…

【AI绘画】Midjourney进阶:三分线构图详解

博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯什么是构图为什么Midjourney要使用构图 💯三分线构图特点使用场景提示词书写技巧测试 💯小结 💯前言 【AI绘画】Midjourney进阶&a…

cmake 报错及解决

1.背景:自己编写CMakeLists.txt并构建项目 2.问题:build目录下执行“cmake ..”命的时候如下报错: CMake Error at CMakeLists.txt:27 (ADD_EXECUTABLE): The target name "client," is reserved or not valid for certain CMak…

FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling

FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling 摘要:引言:背景3 flexMatch3.1 Curriculum Pseudo Labeling3.2 阈值预热3.3非线性映射函数实验4.1 主要结果4.2 ImageNet上的结果4.3收敛速度加速4.4 消融研究5 相关工作摘要: 最近提出的Fi…

MaxKB 三大内置标签用法

一、<quick_question> <quick_question></quick_question> 作用&#xff1a;快速展示问题标签&#xff0c;只需将问题放入标签中&#xff0c;系统便会自动在对话结束时展示该问题。 1.1 展示效果 1.2 快捷使用 在流程编排当中&#xff0c;添加一个AI对话…

线性代数 矩阵

一、矩阵基础 1、定义 一组数按照矩形排列而成的数表&#xff1b;形似行列式&#xff0c;区别点是 矩阵行列式符号()或[]| |形状方阵或非方阵方阵本质数表数属性A|A|是A诸多属性中的一种维度m *n (m 与n可以相等也可以不相等)n*n 同型矩阵 若A、B两个矩阵都是mn 矩阵&#x…

【Elasticsearch系列】Elasticsearch启动失败问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现

前言 &#x1f31f;&#x1f31f;本期讲解关于文件IO的操作&#xff0c;这里涉及到比较常用的文件操作哦~~~ &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】CAS的ABA问题&#xff0c;JUC多线程编程有用的相关类-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&a…

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准&#xff0c;适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑&#xff08;核心板&#xff09;采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起&#xff0c;旨在…

【fisco学习记录2】多群组搭建

说明 文档参考&#xff1a; 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前&#xff0c;先暂停之前的单群组&#xff0c;并删除&#xff1a; cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…

如何从数码相机中恢复已删除的照片

照片恢复是恢复已删除照片的最佳工具&#xff0c;带有恢复 RAW 照片的选项。在本文中&#xff0c;我们将解释如何检索已删除的照片。 不仅适用于专业摄影师&#xff0c;而且对于像我们这样喜欢捕捉回忆的人来说&#xff0c;Moments 相机是一种重要的数字设备。可悲的是&#x…

Gin项目的初始化步骤和常见错误记录

相信很多人对Go的环境安装和Gin项目的初始化都已经手拿把攥很是熟练了&#xff0c;本节介绍一个自己新建Go项目时非常好用的设置以及记录一下Gin项目的初始化过程和常能遇到的错误。 一个容易忽略的Go ENV 在安装了Go的电脑中&#xff0c;我们可以在命令行执行 go env 命令&…

泛谈阿里vs美团订单存储架构演进

泛谈阿里vs美团订单存储架构演进 1. 订单存储介绍 订单的存储背后支撑创单后的系列用户活动&#xff0c;围绕着业务的发展&#xff0c;大厂的订单的数据日益剧增 在手淘订单列表&#xff0c;我们可以看见天猫、飞猪、淘票票等诸多 BU 的订单 在美团的订单列表&#xff0c;我…

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块 简介 下载与安装 如何使用安装好的第三方开源模块 如何上传自己写的模块到 PyPi 简介 在前面的模块介绍和导入当中主要介绍的都是 Python 内置的一些模块&#xff0c;我们把它称为标准库&#…

string模拟优化和vector使用

1.简单介绍编码 utf_8变长编码&#xff0c;常用英文字母使用1个字节&#xff0c;对于其它语言可能2到14&#xff0c;大部分编码是utf_8&#xff0c;char_16是编码为utf_16, char_32是编码为utf_32&#xff0c; wchar_t是宽字符的&#xff0c; utf_16是大小为俩个字节&a…

在线书画展:艺术与科技携手,拓宽艺术之路

在数字化浪潮的推动下&#xff0c;在线书画展正成为艺术与科技完美融合的典范。它不仅拓宽了艺术的传播渠道&#xff0c;提升了个人书画家的开展效率&#xff0c;还促进了艺术家们的职业发展。以下是对在线书画展几大优势的深入探讨。 一、拓宽艺术传播渠道 全球化展示&#x…

前端开发笔记--html 黑马程序员2

文章目录 前端常用标签一、标题标签二、段落标签和换行标签和水平线标签三、文本格式化标签![请添加图片描述](https://i-blog.csdnimg.cn/direct/87583fa23fe04229b016912051f3fc45.png)四、盒子标签五、图像标签六、连接标签七、注释和特殊字符 八、表格标签的基本使用九、列…