OpenCV可以用来绘制不同的集合图形,包括直线,矩形,圆,椭圆,多边形以及在图片上添加文字。用到的绘图函数包括 cv2.line(),cv2.circle(),cv2.rectangle() ,cv2.putText() 等等。

这些绘图函数需要设置参数如:

• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如: (255,0,0 )代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.
• linetype:线条的类型,8 连接,抗锯齿等。默认情况是 8 连接。cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。

1.画线
  要画一条线,你只需要告诉函数这条线的起点和终点。我们下面会画一条从左上方到右下角的蓝色线段。

import numpy as np
import cv2img = np.zeros((512,512,3), np.uint8)   # 创建一块黑色背景
# np.zeros()函数返回一个给定形状和类型的用0填充的数组
# np.zeros((512,512,3) 构造了一个512*512的Numpy数组,同时分配了三个颜色空间cv2.line(img,(0,0),(511,511),(0,255,0),5)  # 指定两个端点画一条绿色的线且为5个像素

2. 画矩形

  要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标。这次我们会在图像的右上角画一个蓝色的矩形。

cv2.rectangle(img,(384,0),(510,128),(255,0,0),3)

3.画圆
  要画圆的话,只需要指定圆形的中心点坐标和半径大小。我们在上面的矩形中画一个圆。

cv2.circle(img,(447,63), 63, (0,0,255), -1) #-1表示填充颜色

4. 画椭圆
  画椭圆比较复杂,我们要多输入几个参数。一个参数是中心点的位置坐标。
  下一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是 0 到360,就是整个椭圆。下面的例子是在图片的中心绘制一个椭圆。

cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)

绘制半个椭圆

cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1) 

5.画多边形
  画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。这个数组的数据类型必须为 int32。这里画一个白色的具有四个顶点的多边形。

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))

5. 在图片上添加文字

  要在图片上绘制文字,你需要设置下列参数:
  • 你要绘制的文字
  • 你要绘制的位置
  • 字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
  • 字体的大小
  • 文字的一般属性如颜色,粗细,线条的类型等。为了更好看一点推荐使用linetype=cv2.LINE_AA。
在图像上绘制红色的 OpenCV。

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

import numpy as np
import cv2img = np.zeros((512,512,3), np.uint8)
#画直线
cv2.line(img,(0,0),(511,511),(255,0,0),5)
#画矩形
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
#画圆
cv2.circle(img,(447,63), 63, (0,0,255), -1)
#画椭圆
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
#画多边形
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(255,255,255))
#在图片上添加文字
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(0,0,255),2,cv2.LINE_AA)
#结果呈现
picture = 'example'
cv2.namedWindow(picture)
cv2.imshow(picture, img)
cv2.waitKey(0)
cv2.destroyWindow(picture)

python OpenCV 绘图函数相关推荐

  1. OpenCV绘图函数:cv2.line、cv2.circle、cv2.rectangle、cv2.ellipse、 cv2.putText()、cv2.setMouseCallback

    ​OpenCV是一个用于图像处理.分析.机器视觉方面的开源函数库. 不管你是做科学研究,还是商业应用,opencv都能够作为你理想的工具,它可以运行在Linux.Windows.Android和Mac ...

  2. python opencv imread()函数 (从文件加载图像)

    def imread(filename, flags=None): # real signature unknown; restored from __doc__"""i ...

  3. python opencv的函数cv2.LUT(src, lut, dst=None)的具体使用(LUT:查找表)

    文章目录: 1 查看cv2.LUT(src, lut, dst=None)函数的使用 1.1 LUT函数的python接口cv2.LUT()的参数说明 1.2 LUT函数在C++中的定义 2 cv2. ...

  4. python opencv resize函数_Python OpenCV中的resize()函数的使用

    改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者.也可以按比例调整图像大小. 这里将介绍resize()函数的语法及实例. 语法 函数原型 cv2.resize(src, dsize[, ds ...

  5. python opencv resize函数_python cv2.resize函数high和width注意事项说明

    在opencv中获取图片的尺寸的方法是: import cv2 img = cv2.imread(path) img.shape 返回的是三维数组(high, width, 3),当我们需要对图像进行 ...

  6. python opencv imread()函数,关于:灰度图(二维数组图),彩色图(三维数组图)

    使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图 ...

  7. Python OpenCV 绘图

    前言   opencv-python 4.3.2   官网参考资料 1. 绘图 API 1.1 线段 img = cv.line(img, pt1, pt2, color[, thickness[, ...

  8. python opencv resize函数_OpenCV尺寸调整函数resize

    void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation ...

  9. Python+OpenCV实用案例应用教程:基于OpenCV的图像处理

    在进行图像处理时,你迟早会发现需要转换图像--一般通过应 用艺术滤镜.推断某些部分.混合两幅图像,或者任何你能够想到的 方法完成.本章将介绍一些可以转换图像的技术.最后,你还能够执 行图像锐化.标记主 ...

最新文章

  1. iOS中常见的图片压缩方法
  2. qt webassembly 安装过程记录及注意事项
  3. 调试来自于逐飞的MM32F3277移植有MicroPython开发板
  4. tickcount()修改成小时分钟_推出一分钟追剧新模式 首部真人漫改竖屏番《通灵妃》开播...
  5. python PyQt5 QtCore.QPointF类、QPointF类与QPoint类区别
  6. boost::mp11::mp_replace_second相关用法的测试程序
  7. mysql gui 比较_Navicat for MySQL与MySQL GUI Tools功能比较
  8. javascript中子类如何继承父类
  9. 常用类回顾之(String类)
  10. 视觉设计_视觉设计:
  11. phpcmsV9:后台无法选择模板
  12. SpringBoot 配置文件(yml)
  13. Wireshark网络封包分析软件——过滤表达式
  14. 微信语音怎么转发给别人听_新版微信语音转发方法(微信语音怎么转发给别人听)...
  15. 雅黑PHP探针Light,雅黑php探针
  16. matlab进行下采样
  17. 使用bat脚本自动打开cmd并执行命令
  18. JAVA8的一些写法
  19. Spring Web Flow 2中的流管理持久性
  20. 浅析JWT| JWT是啥子,Java构建JWT

热门文章

  1. 机器学习--线性回归、逻辑回归
  2. Hadoop的mapper输出中key和value之间的分隔符
  3. ARCGIS导入XY坐标的EXCEL文档,出现无法选择X和Y字段的问题
  4. 满帮如何将机器学习应用于车货匹配和公路干线价格预测?
  5. spring boot自动配置之jdbc
  6. spring源码分析之context
  7. The Class Loader Hierarchy--转载
  8. spring beans源码解读之--BeanFactory进化史
  9. 代码重构----使用java有限状态机来消除太多的if else判断
  10. RuoYi(分离版) 使用代码生成器添加子模块(idea版)