小强学Python+OpenCV之-1.3绘图

小强学Python+OpenCV之-1.3绘图

大家好,又见面了,我是全栈君。

目标

今天的课程比较轻松,我们来学习一下OpenCV中几个绘图函数:

  1. cv2.line
  2. cv2.rectangle
  3. cv2.circle

画直线

直接经过前面两节的内容。我想直接上代码应该是可以接受的。创建一个Python脚本,取名draw.py

# 导入库 import numpy as np import cv2  # 初始化一块400*600的画布(相当于生成一个numpy数组,也就是一幅图像),注意这里的画布是三通道的,也就是彩色图像 canvas = np.zeros((400, 600, 3), dtype="uint8")  # 画一条绿线 green = (0, 255, 0) # 起点(0, 0)至终点(600, 400),颜色绿色。PS.这里有一个默认参数,线宽默认为1个像素 cv2.line(canvas, (0, 0), (600, 400), green) cv2.imshow("Canvas", canvas) cv2.waitKey(0)  # 画一条红线 red = (0, 0, 255) # 起点(600, 0)至终点(0, 400),颜色红色。线宽指定为3个像素 cv2.line(canvas, (600, 0), (0, 400), red, 3) cv2.imshow("Canvas", canvas) cv2.waitKey(0)

执行代码python draw.py如下图所示:


小强学Python+OpenCV之-1.3绘图

image.png

这里要注意的两点:
  1. 使用np.zeros函数的第一个参数接收了一个list(400,600,3),表示生成numpy矩阵,用来表示一个400(高度)* 600(宽度),3通道(彩色)图像。注意:高度400在前,宽度600在后。
  2. cv2.line函数,第一个参数表示一幅(用nympy矩阵表示的)图像,第二个参数表示要画的线的起点坐标(注意:坐标表示为(x,y)形式,x表示哪一列,y表示哪一行,即宽度在前,高度在后),第三个参数表示要画的线的终点,第四个参数表示线的颜色,第五个参数表示线宽(默认线宽为1个像素)。wendinyule.cn  dazhonyule.cn

画矩形

在上面的代码后面,接着增加如下代码:

# 在坐标(10,10)画一个50*50大小的,绿色的矩形,线宽使用默认值1(像素) cv2.rectangle(canvas, (100, 100), (150, 150), green) cv2.imshow("Canvas", canvas) cv2.waitKey(0)  # 用5个像素的线宽再画一个红色矩形,线宽为5 cv2.rectangle(canvas, (150, 200), (250, 225), red, 5) cv2.imshow("Canvas", canvas) cv2.waitKey(0)  # 画一个填充矩形 blue = (255, 0, 0) # 画一个蓝色矩形,线宽为-1(-1表示填充) cv2.rectangle(canvas, (300, 50), (325, 125), blue, -1) cv2.imshow("Canvas", canvas) cv2.waitKey(0)

执行代码python draw.py如下图所示:


小强学Python+OpenCV之-1.3绘图

image.png

使用cv2.rectangle时注意:
  1. 默认线宽为1
  2. 线宽指定为-1时表示填充

画圆

继续追加代码如下:

# 白色可以用BGR三通道都是255来表示 white = (255, 255, 255)  # 在(300,300)处画一个圆,半径50,线宽为3 cv2.circle(canvas, (300, 300), 50, white)  # 我们可以组一个自己的颜色,比如: color = (255, 0, 255)  # 在(500,200)处画一个圆,半径40,线宽为3 cv2.circle(canvas, (500, 200), 40, color, -1) cv2.imshow("Canvas", canvas) cv2.waitKey(0)

执行代码python draw.py如下图所示:


小强学Python+OpenCV之-1.3绘图

image.png

总结

我们学会了使用cv2.line、cv2.rectangle、cv2.circle三个函数。要注意的事项,再在这里重复一下:

  1. np.zeros在传入参数时,注意:高度在前,宽度在后。
  2. 默认线宽为1
  3. 线宽指定为-1时表示填充
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108484.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 仓库管理(WMS)系统及其组成

    仓储管理系统(WMS)是一个实时的计算机软件系统,它能够按照运作的业务规则和运算法则,对信息、资源、行为、存货和分销运作进行更完美地管理,使其最大化满足有效产出和精确性的要求。详情连接地址:https://baike.baidu.com/item/%E4%BB%93%E5%82%A8%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/3212656现代仓储管理系统…

    2022年4月4日
  • iconfont的基本使用

    iconfont的基本使用阿里巴巴的iconfont网站有很多小图标可供我们使用,链接如下iconfont网站链接。这个图标资源库可以一个图片一个图片的下载,也支持批量下载。下面我来介绍下批量下载。进入网页之后,可以选择自己需要的小图标,将鼠标移动到小图标上之后,就会出现如下所示的3个按钮。这3个按钮分别是添加到购物车、收藏、下载的按钮。如果需要批量下载图片,我们可以先添加到购物车。加入购物车之后,点击购物车按钮就会在右侧出现一个弹框。点击添加到项目(添加到项目,可以根据自己的需要设置下载哪些选项)

    2022年10月25日
  • pycharm 激活码2021(破解版激活)「建议收藏」

    pycharm 激活码2021(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • maven中web3sdk引入问题

    maven中web3sdk引入问题

    2021年3月12日
  • 详细总结BS架构和CS架构

    详细总结BS架构和CS架构文章目录CS架构CS结构CS的优缺点BS架构BS结构BS的优缺点CS与BS的对比总结文章内容学习百度百科和博主“向上人生”CS架构客户端-服务器,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户端负责完成与用户的交互任务。CS结构在C/S结构中,应用程序分为两部分:服务器部分和客户端部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户端部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大

    2022年6月20日
  • qxdm无法安装问题闪一下_Qualcomm QXDM

    qxdm无法安装问题闪一下_Qualcomm QXDM似乎很难看见这样不错的软件了,大概是因为功能确实切中了很多用户的期待,相类似功能的软件在这一点上做的就感觉一般般吧,大概就是全靠同行衬托了。是一种实时数据采集和诊断记录工具专业显示统计和诊断信息,使用户能够读写非易失性存储器LOG获取,LOG文件转换,测试机状态获取把程序里面的一些Message或者数据包输出到QXDM的图形接口确合理的使用可以为我们测试提供便捷的定位手段QualcommQXDM…

    2022年10月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号