一、 基本图形绘制

1. 基本函数与参数

cv2.line(): 线

cv2.circle(): 圆

cv2.rectangle(): 矩形

cv2.ellipse(): 椭圆

cv2.putText(): 文字

  • img:需要绘制形状的图像。
  • color:颜色的形式,对于BGR,将作为元组传递比如(255,0,0)表示蓝色;对于灰度图,只需要传递标量值。
  • thickness: 线或圆形等图像的厚度,如果对闭合图像像圆形传递“-1”,它将填充形状, 默认厚度 = 1。
  • lineType:线的类型,默认情况下为8连接,cv2.LINE_AA 是适合曲线的抗锯齿线。

2. 画线

line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

  • pt1:直线起点
  • pt2:直线终点

创建一个白色图像,并在其上从左上角到右下角绘制一条蓝线。

代码

import numpy as np
import cv2 # 创建黑底图像(像素值【0,255】,白色为255)
img = np.ones((512, 512, 3), np.uint8) * 255 # 绘制宽度为 5 px 的蓝线(B,G,R)
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
cv2.imshow('line', img)
cv2.waitKey()

3. 矩形

rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

  • pt1:矩形左上角坐标
  • pt2:矩形右下角坐标

在图像的右上角绘制一个绿色矩形。

代码

import numpy as np
import cv2 # Create a black image
img = np.zeros((512, 512, 3), np.uint8) cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3) cv2.imshow('rectangle', img)
cv2.waitKey()

4. 画圆

circle(img, center, radius, color, thickness=None, lineType=None, shift=None)

  • center:圆心位置
  • radius:半径

在图像的右上角绘制一个绿色矩形。

代码

import numpy as np
import cv2 # Create a black image
img = np.zeros((512, 512, 3), np.uint8) cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
cv2.circle(img, (447, 63), 63, (0, 0, 255), -1) cv2.imshow('circle',img)
cv2.waitKey()

5. 椭圆

ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)

  • center:中心位置
  • axes:轴长度(长轴长度,短轴长度)
  • angle:椭圆在逆时针方向上的旋转角度
  • startAngle:主轴顺时针方向测量的椭圆弧的起点
  • endAngle:主轴顺时针方向测量的椭圆弧的终点

在图像的右上角绘制一个绿色矩形。

代码

import numpy as np
import cv2 # Create a black image
img = np.zeros((512, 512, 3), np.uint8) cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1) cv2.imshow('ellipse', img)
cv2.waitKey()

6. 多边形

polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

要绘制多边形,首先需要顶点坐标.将这些点转换为ROWSx1x2形状的数组,其中ROWS是顶点数,它应该是int32类型.

绘制一个带有四个黄色顶点的小多边形。

代码

import numpy as np
import cv2 # Create a black image
img = np.zeros((512, 512, 3), np.uint8) pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255)) cv2.imshow('polylines',img)
cv2.waitKey()

Note:

如果第三个参数为False,您将获得连接所有点的折线,而不是闭合形状。

cv2.polylines()可用于绘制多条线,只需创建要绘制的所有行的列表并将其传递给函数, 所有线条都将单独绘制,绘制一组行比为每行调用cv2.line() 要好得多,速度更快。

7. 添加文字

putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

要将文本放入图像中,您需要指定以下内容。

  • text:要写入的文本数据
  • org:您想要放置它的位置坐标(即数据开始的左下角)。
  • fontFace:字体类型(检查cv2.putText() 文档以获取支持的字体)
  • fontScale:字体比例(指定字体大小)

常规的东西,如颜色,粗细,线型等。为了更好看,建议使用lineType = cv.LINE_AA。

图像上写白色的opencv几个字母

代码

import numpy as np
import cv2 # Create a black image
img = np.zeros((512, 512, 3), np.uint8) font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2 , cv2.LINE_AA) cv2.imshow('text', img)
cv2.waitKey()

【opencv系列04】OpenCV4.X图形绘制的更多相关文章

  1. Win10系列:VC++ Direct3D图形绘制1

    通过前面的介绍,相信读者已经了解了如何新建一个用于开发Direct3D应用程序的项目模版,以及这个项目模版中用于绘制立体图形的主要函数.在本小节中,将通过一个具体的示例来介绍如何使用Visual St ...

  2. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  3. 【D3.V3.js系列教程】--(十五)SVG基本图形绘制

    [D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...

  4. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  5. 【Silverlight】Bing Maps学习系列(五):绘制多边形(Polygon)图形(转)

    [Silverlight]Bing Maps学习系列(五):绘制多边形(Polygon)图形 Bing Maps Silverlight Control支持用户自定义绘制多边形(Polygon)图形, ...

  6. 【opencv系列02】OpenCV4.X图像读取与显示

    一.读取图片 opencv中采用imread() 函数读取图像 imread(filename, flags=None)     filename 图片的路径     flags 图像读取方式 ● c ...

  7. 推荐12个最好的 JavaScript 图形绘制库

    众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web  ...

  8. css3之图形绘制

    由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...

  9. 从零开始openGL—— 二、 基本图形绘制

    前言 这是从零开始openGL系列文章的第二篇,在上篇文章中介绍了基本的环境配置,这篇文章将介绍如何绘制基本图形(圆.三角形.立方体.圆柱.圆锥). 基本框架 下面这里我先给出opengl的3D绘图的 ...

随机推荐

  1. (转载)SVN使用说明

    为了方便个人使用,转载过来的,如需查阅,请前往原文地址:http://blog.csdn.net/ideal_utopia/article/details/51883796 为什么要使用SVN? 在程 ...

  2. USB小白学习之路(2)端点IN/OUT互换

    端点2(out)和端点6(in)的out_in互换 注:这里的out和in都是以host为标准说的,out是host的out,在设备(Cy7c68013)这里其实是输入端口:in是host的in,在设 ...

  3. 93-time模块

    目录 time模块 一.time模块 1.1 时间戳 1.2 格式化时间 1.3 结构化时间 1.4 不同格式时间之间的转换 1.5 其它用法 time模块 一.time模块 import time ...

  4. H5页面通用头部设置

    见到很多人写H5页面都不设置头部,不忍直视,于是整理一篇文章,不定期更新,为了让自己显得专业一点,也为了方便自己复制粘贴 一般来说必须设置项 <!-- 页面编码 --> <meta ...

  5. 【新功能】MaxCompoute禁止Full Scan功能开放

    摘要: 2018年1月10日,MaxCompute禁止Full Scan功能开放.对于新创建的project默认情况下执行sql时,针对该project里的分区表不允许全表扫描,必须有分区条件指定需要 ...

  6. 细说集群技术(Cluster)

    今天本人给大家讲解一些我对集群技术一个理解,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!! 集群(Cluster)技术:通过此可以用较低的成本获取较高的性能 ...

  7. seo搜索优化教程10-黑帽SEO

    为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉科技强势推出seo搜索优化教程.此为seo教程第十课 学习黑帽SEO并不是教大家如何作弊,而是想让大家避免使用黑帽SEO手法,从而导致被搜 ...

  8. Python3基础语法和数据类型

    Python3基础语法 编码 默认情况下,Python3源文件以UTF-8编码,所有字符串都是unicode字符串.当然你也可以为原码文件制定不同的编码: # -*- coding: 编码 -*- 标 ...

  9. 内网渗透之权限维持 - MSF与cs联动

    年初六 六六六 MSF和cs联动 msf连接cs 1.在队伍服务器上启动cs服务端 ./teamserver 团队服务器ip 连接密码 2.cs客户端连接攻击机 填团队服务器ip和密码,名字随便 ms ...

  10. JVM02——JVM运行时内存

    在上一篇文章中,我们介绍了 JVM 的内存区域,本文我们将继续围绕 JVM 展开话题,介绍 JVM 运行时内存.关注我的公众号「Java面典」了解更多 Java 相关知识点. Java 堆从 GC 的 ...