要使用OpenCV绘制图形,除了cv2库之外,我们还需要便于进行矩阵操作的numpy库:

import cv2 as cv
import numpy as np

空白窗口

先展示代码:

blank = np.zeros((300,500,3), dtype='unit8')cv.imshow('Blank', blank)

代码解释:首先用numpy生成一个元素的值全为零的多维数组,dtype表示数组里的元素的类型,这是RGB图片所使用的类型(具体是什么含义这里不详细说明);(300,500,3)中的前两个表示这是一个高为300、宽为500的图片,最后的3表示这是一个三通道(channel)的图片(即r,g,b三个通道)。

当我们用cv.imshow()将这个图片展示出来,就会得到一个黑的图片,什么也没有(因为数组元素全为零)。

改变图片的子区域的颜色

我们可以给一个图片的子区域(subarea)上色(当然这工艺很粗糙)。我们以上述的空白图片为例:

blank[150:200, 300:400] = 0,0,255
cv.imshow('Red',blank)

代码解释:这其实就是numpy中的数组/矩阵的赋值,把blank的某一部分区域,即高从150到200、宽从300到400的区域,赋相应的值,即0(blue channel),0(green channel),255(red channel),结果就是红色。注意OpenCV比较“奇怪”,颜色通道的顺序不是RGB而是BGR。

绘制矩形

cv.rectangle(blank, (0, 0), (blank.shape[1] // 2, blank.shape[0] // 2), (0, 255, 0), thickness=-1)
cv.imshow('Rectangle', blank)

代码解释:我们直接利用OpenCV中的函数rectangle即可。函数的参数很多,大家在写代码时IDE弹出的自动补全应该也能看到:

  • 第一个参数在什么图片上绘制,这里用的是上文中的blank;
  • 紧接着的两个参数是矩形的左上顶点和右下顶点的坐标(因为这两个点就能确定矩形的位置);
  • 第四个参数是矩形边框的颜色;
  • 第五个参数是矩形的边框的粗细,如果是负数,那么表示将矩形填充,即本例所示。
  • 还有其他一些参数,本例没有用到,大家可以去查官方文档。

大家可能比较困惑的是为什么第三个参数中先是blank.shape[1] // 2,后是blank.shape[0] // 2。这是因为OpenCV中,坐标系中的x轴是水平的,y轴是垂直的,并且图片的shape是“先高后宽”。

绘制圆

cv.circle(blank, (blank.shape[1] // 2, blank.shape[0] // 2), 40, (0, 0, 255), thickness=-3)
cv.imshow('Circle', blank)

代码解释:与绘制矩形类似,我们直接用OpenCV中的函数circle,各参数分别为:

  • 所绘制圆形的对象,即blank
  • 圆心的坐标位置,这里选择在整个图片的中心
  • 圆的半径大小(圆的圆心和半径就能确定一个圆
  • 圆的轮廓线的颜色,这里是红色
  • 圆的轮廓线的粗细,如果是负数,那么表示将圆形填充,即本例所示。
  • 其他参数,本例未显示。

绘制直线

cv.line(blank, (100, 250), (300, 200), (255, 255, 255), thickness=3)
cv.imshow('Line', blank)

代码解释:类似的,这里使用line函数,参数分别为:

  • 第一个参数:要绘制直线的图片对象,即blank
  • 第二、三个参数:直线的两个端点的坐标(注意OpenCV中图片的x、y轴的方向)
  • 第四个参数:直线的颜色,这里是白色
  • 第五个参数:直线的粗细
  • 其他参数没有使用,是默认值

注意:在上述代码之后最好加上cv.waitKey(0),防止图片一闪而过。

如何使用OpenCV绘制简单的几何图形?相关推荐

  1. OpenCv绘制简单的几何图形

    opencv常用绘制方法 前言 1.直线line line的函数原型如下 使用方法 2.箭头arrowedLine arrowedLine的函数原型如下 使用方法 3.矩形rectangle. rec ...

  2. python+OpenCV图像处理(三)绘制简单的几何图形、显示文字

    绘制简单的几何图形.显示文字 (一)绘制直线和矩形 img = np.zeros([512, 512, 3]) # line函数用来画直线,第一个参数可以理解为画布矩阵, # 第二个参数pt1是直线的 ...

  3. python opencv 绘制简单图形

    09-python opencv 绘制简单图形 09-python opencv 绘制简单图形 概述 实现过程 引用与创建空图 绘制直线 绘制矩形 绘制圆 绘制椭圆 添加文字 显示图像 源代码 运行结 ...

  4. OpenGL入门学习[二] 绘制简单的几何图形

    OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...

  5. 用canvas绘制简单的几何图形

    文章目录 添加canvas 调用canvas的API接口 绘制简单的图形 直线 三角形 矩形 圆 清空画布 canvas是一块矩形区域,相当于一块画布.它本身不具有绘图功能,绘图功能主要是由JavaS ...

  6. openCV绘制简单Sierpinski(分形)图形

    运行环境:openCV4 C++ X64 对于分形图像一般具有一个主要性质 自相似性 分形图形的局部和整体一般具有相似的结构,细节上具有递归的特性,细节可以达到无限小,但是可以预测. 我们利用这个性质 ...

  7. 2.绘制简单的几何图形

    一.点.直线和多边形 数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备如何精确, 始终不能输出一个无穷小的点.一般情况下,Op ...

  8. 10、OpenCV绘制几何图形

    OpenCV绘制几何图形 一.学习目标 二.OpenCV中点和颜色标量的表示 三.绘制不同的几何形状 四.完整代码示例 一.学习目标 了解点和颜色标量的数据结构对象 学会使用OpenCV画直线段 学会 ...

  9. [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. “被遗忘的宇航员”逝世,他是阿波罗11号上唯一没登月的人
  2. reddit高赞资源:20h系统性深度学习强化学习课程,视频、PPT、代码全都有 | 免费...
  3. 位操作:BitVector32结构 z
  4. Boost:矩阵转置的测试程序
  5. 02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)
  6. Android WebView中使用loadData时出现的乱码问题解决办法
  7. python断点_Python断点()
  8. Android starting 4---四大组件之一---Activity入门
  9. Django Book 2.0 翻译
  10. 昂达vi40精英版刷Linux,昂达Vi40精英版V1.0固件专业网友实测
  11. Vue中native的用法
  12. 查看计算机温度指令,怎么查看电脑温度|查看电脑温度的三种方式
  13. 高维空间中点到超平面的距离
  14. python找不到指定模块之几种可能的解决办法:
  15. Linux测试系统稳定性的工具,Linux桌面操作系统稳定性测试.pdf
  16. Arduino 实验 —— 红外遥控RGB灯
  17. DataStream与DataSet
  18. zcmu oj 1087: 统计字符
  19. 【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质
  20. 更换Ubuntu的软件仓库为国内的镜像

热门文章

  1. n阶楼梯,每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
  2. 阿里云短信验证-PHP
  3. OA和ERP的简介和联系
  4. ViewPager循环滑动和靠按钮来控制循环滑动
  5. 30人15个教徒跳海
  6. 她,连续 5 年担任双 11 大队长,这位阿里 P10 有点“特别”!
  7. 数据中台:基于标签体系的360°用户画像
  8. 大同5中高考2021年成绩查询,大同中学排名前十名,2021年大同中学排名一览表
  9. Orientdb--写入数据
  10. 6月20日云栖精选夜读:阿里怎么发工资?自研薪酬管理系统首次曝光