【opencv系列04】OpenCV4.X图形绘制
一、 基本图形绘制
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图形绘制的更多相关文章
- Win10系列:VC++ Direct3D图形绘制1
通过前面的介绍,相信读者已经了解了如何新建一个用于开发Direct3D应用程序的项目模版,以及这个项目模版中用于绘制立体图形的主要函数.在本小节中,将通过一个具体的示例来介绍如何使用Visual St ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
- 【D3.V3.js系列教程】--(十五)SVG基本图形绘制
[D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...
- Android画图系列(二)——自己定义View绘制基本图形
这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...
- 【Silverlight】Bing Maps学习系列(五):绘制多边形(Polygon)图形(转)
[Silverlight]Bing Maps学习系列(五):绘制多边形(Polygon)图形 Bing Maps Silverlight Control支持用户自定义绘制多边形(Polygon)图形, ...
- 【opencv系列02】OpenCV4.X图像读取与显示
一.读取图片 opencv中采用imread() 函数读取图像 imread(filename, flags=None) filename 图片的路径 flags 图像读取方式 ● c ...
- 推荐12个最好的 JavaScript 图形绘制库
众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web ...
- css3之图形绘制
由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...
- 从零开始openGL—— 二、 基本图形绘制
前言 这是从零开始openGL系列文章的第二篇,在上篇文章中介绍了基本的环境配置,这篇文章将介绍如何绘制基本图形(圆.三角形.立方体.圆柱.圆锥). 基本框架 下面这里我先给出opengl的3D绘图的 ...
随机推荐
- 自动贩卖机VS无人门店:谁是真正的零售新风口?
原本在线上不断发力,让实体店几乎凋敝的电商,却忽然对线下兴趣大增.阿里疯狂入股.收购线下商超:京东要在全国范围内开设百万家便利店,仅在农村就将开设50万家--这一股浪潮,或将直接改变整个百货零售 ...
- iPhone6爆炸真是小概率事件吗?
前不久,央视新闻报道,根据上海市消费者权益保护委员会统计,2016年9月到11月,共接到8名消费者投诉,反映其苹果手机在正常使用或者正常充电的情况下突然爆炸.此外,苹果手机还被投诉存在自动关机等问题, ...
- Unity中使用C#的null条件运算符?.的注意事项
Introduction: 在C#6及以上版本中,加入了一项特别好用的运算符:Null条件运算符?.和?[]可以用来方便的执行判空操作,当运算符左侧操作数不为null时才会进行访问操作,否则直接返回n ...
- React之mockjs+sass+生命周期函数
mdn W3C标准网站 运行sass cnpm i -D node-sass-chokidar npm-run-all rem单位设置 <script> //rem单位设置 documen ...
- 从0开发3D引擎(十一):使用领域驱动设计,从最小3D程序中提炼引擎(第二部分)
目录 上一篇博文 本文流程 回顾上文 解释基本的操作 开始实现 准备 建立代码的文件夹结构,约定模块文件的命名规则 模块文件的命名原则 一级和二级文件夹 api_layer的文件夹 applicati ...
- 前端面试题-HTML语义化标签
一.HTML5语义化标签 标签 描述 <article> 页面独立的内容区域. <aside> 页面的侧边栏内容. <bdi> 允许您设置一段文本,使其脱离其父元素 ...
- redis如何在spring里面的bean配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- django使用户名和邮箱都能登录
为了能够让邮箱也能登录,需要重新定义认证功能,需要把email添加成username用于认证 定义的class继承ModelBackend,使用Q方法并集 然后在settings.py里面添加 这样既 ...
- 阿里AI芯片:12nm工艺、709平方毫米大核心
含光出自<列子·汤问>篇有“上古三剑”一章,寓意含而不露,光而不耀,象征含光 800 无形却强劲的算力. 含光 800 是一款 AI 芯片,偏重推理.据介绍,1 颗含光 800 的算力相当 ...
- 使用VS2017进行Python代码的编写并打印出九九乘法表
我们来盘一盘怎么使用VS2017进行python代码的编写并打印出九九乘法表. 使用Visual Studio 2017进行Python编程不需要太复杂的工作,只需要vs2017安装好对Python的 ...