首页 > 其他分享 >图像入门2

图像入门2

时间:2023-05-28 09:22:04浏览次数:37  
标签:入门 img pts 图像 np 绘制 cv 255

图像入门2

1. 大纲

1、使用OpenCV绘制不同的几何形状

2、学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.sllipse(),cv.putText()

2. 常见参数

img:绘制形状的图像

color:形状的颜色,作为元组传递

厚度:线或圆等的粗细。对闭合图形传递-1,填充形状,默认厚度为1

lineType:线的类型,是否为8连接线,抗锯齿线等。cv.LINE_AA

3. 绘制各类几何图形

​ 要绘制一条线,传递线开始和结束的坐标。创建一个黑色的图像,并从左上角到右下角绘制一条直线。

# 绘制一条厚度为5的蓝色对角线
cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)

​ 要绘制一个矩形,传递矩形的左上角和右下角的坐标,其他参数类似。

# 绘制矩形
cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)

​ 要绘制一个圆,需要确定其中心和半径,其他参数类似。

# 绘制圆形
cv.circle(img, (447, 63), 63, (64, 172, 255), -1)

​ 要绘制一个椭圆,需要确定中心的坐标,和长短轴的长度,angle是椭圆沿逆时针方向旋转的角度。startAngleEndAngle表示从主轴沿顺时针方向测量的椭圆弧的开始和结束。即给出0和360给出完整的椭圆。

# 绘制椭圆
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)

​ 如果要绘制多边形,首先需要确定各个顶点的坐标,创建一个ROW*1*2的数组,其中ROW是顶点数,并且类型为int32

# 绘制多边形
pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (0, 255, 255))

​ 如果要绘制文本,首先需要设置字体格式font,并调用cv.putText()函数,第一个参数是图像名称,第二个参数是文本内容,第三个参数是文本的起始位置,第四个参数是字体的格式,第五个参数是字体的大小,第六个参数是字体的颜色。为了获得更好的外观,我们使用lineType=cv.LINE.AA

# 绘制文本
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)

​ 在完成上述代码之后,效果如下图所示:

4. 附录(完整代码)

import numpy as np
import cv2 as cv


if __name__ == "__main__":
    # 创建黑色的图像
    img = np.zeros((512, 512, 3), np.uint8)
    # 绘制一条厚度为5的蓝色对角线
    cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)
    # 绘制矩形
    cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)
    # 绘制圆形
    cv.circle(img, (447, 63), 63, (64, 172, 255), -1)
    # 绘制椭圆
    cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)
    # 绘制多边形
    pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
    pts = pts.reshape((-1, 1, 2))
    cv.polylines(img, [pts], True, (0, 255, 255))
    # 绘制文本
    font = cv.FONT_HERSHEY_COMPLEX
    cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)

    cv.imshow('drawing', img)
    cv.waitKey(0)
    cv.destroyAllWindows()

标签:入门,img,pts,图像,np,绘制,cv,255
From: https://www.cnblogs.com/chickchick/p/17437792.html

相关文章

  • 二分图和 2-SAT 问题入门
    二分图定义通俗的说,就是一个图可以分成两个部分,两个部分内部没有连接的边,所有的边都在两个部分之间。比如这就是一张二分图。可以发现,A,B集合中各自是没有边连接的,边都连在了AB集合之间。并且4是独立的,所以其实我们把它归到集合A中或者集合B中都可以。判断二分图就......
  • 【计算机视觉】---平滑图像
    简介计算机视觉中平滑图像的原理是通过一系列的图像处理操作,对图像中的噪声进行抑制和去除,以达到平滑图像的效果。平滑图像的主要目的是减少图像中的细节和噪声,以便更好地进行后续的图像分析和处理。均值滤波:平滑图像的一种常见方法是通过邻域操作对每个像素周围的像素进行处理。常......
  • HTML入门笔记1
    一、HTML是谁发明的?1990年TimBernersLee发明了www(worldwideweb万维网),为了方面人们于阅读网页,与此同时自己又发明了HTML、HTTP、URL;用自己写的浏览器去访问自己写的服务器,这就是如今人们上网访问网页的起源和雏形。二、HTML起手应该写甚么?三、常用的表章节的标签h1-h6......
  • 渗透测试分析 ---- xxe实体注入入门
    因为我对xxe知之甚少,所以使用chatgpt帮忙翻译了一下效果十分优秀,当xml解析器解析了这句话就会取出外部数据 ......
  • Java入门10(IO流)
    IO流(input/output)​ 数据运输的载体或者中间键字节流输入字节流(FileInputStream)​ 以字节为最小单元,读取任何类型的文件,但是要注意字符集类型的转换。publicstaticvoidtestFileInputStream(){//获取文件对象Filef=newFile("文件绝对路径balabala");//......
  • WPF入门实例 WPF完整例子 WPF DEMO WPF学习完整例子 WPF实战例子 WPF sql实例应用 WPF
    WPF和WinForms都是用于创建Windows桌面应用程序的开发框架,它们有一些相似之处,但也有很多不同之处。在开发速度方面,这取决于具体情况。如果您熟悉WinForms开发并且正在开发简单的界面应用程序,则可能会比使用WPF更快速地完成任务。然而,在设计和实现复杂的用户界面时,WPF可......
  • Wpf基础入门——容器Panel篇
    WPF布局基础WPF的布局原则一个窗口中只能包含一个元素不应显示设置元素尺寸不应使用坐标设置元素的位置可以嵌套布局容器WPF有哪些布局容器?Grid:网格。可以自定义行和列并通过行列的数量、行高和列宽来调整控件的布局。近似于HTML中的Table。StackPanel:栈式面板。可将......
  • 【K8s入门推荐】K8s1.24版本部署全教程,轻松掌握技巧kubeadm丨Kubernetes丨容器编排丨
    通过kubeadm方式极速部署Kubernetes1.24版本前言在Kubernetes的搭建过程中,繁琐的手动操作和复杂的配置往往会成为制约部署效率的关键因素。而使用kubeadm工具可以避免这些问题,大大提高集群的部署效率和部署质量。本文将为大家详细介绍如何使用kubeadm工具快速搭建Kubernetes1.24......
  • Linux入门篇之环境搭建
    前言对于Linux的初学者来说,云服务器是最好也是最方便的选择一、搭建Linux环境的方法1.裸机安装Linux操作系统,不推荐2.虚拟机安装Linux操作系统,不推荐3.云服务器安装,推荐二、白嫖使用云服务器云服务器的安装平台有很多,例如腾讯云,阿里云等,我们可以直接进入对应平台官网进行下载但是,有......
  • 企业内容管理入门指南:从概念到实践,提升协作效率和质量
    在现代企业管理中,存在一种容易被忽视但又极为重要的管理理念——企业内容管理。由于“企业内容”这一概念过于抽象,大家对它可能还比较模糊。所以,今天我们来聊聊企业内容管理。在开始之前,对企业内容做一个简明的介绍:企业内容是合同、发票、设计图纸、研发文件、项目文件、物流文件、......