常用的绘图函数有:

cv2.line()       cv2.circle()        cv2.rectangle()      cv2.ellipse()       cv2.putText()

上面所有的这些绘图函数需要设置下面这些参数:
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:(255,0,0)代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形就会被填充。默认值是 1.

• linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。

一、画线

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)#创建一个黑色的图片
cv2.line(img,(0,0),(511,511),(0,0,255),1)
cv2.imshow('opencv',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.line(img,start,end,color,thickness)函数,img是要操作的图片,start和end是画线的两端点,color是线的颜色,thickness是线的粗细程度。

二、画矩形

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

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.rectangle(img,(50,50),(400,400),(0,0,255),3)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()

三、画圆

要画圆的话,只需要指定圆形的中心点坐标和半径大小。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.circle(img,(200,200),160,(0,0,255),-1)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()

由于圆为闭合曲线,故thickness设置为 -1,那么这个图形就会被填充。

四、画椭圆

画椭圆比较复杂,我们要多输入几个参数,下面会详细介绍。

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
cv2.ellipse(img,(256,256),(100,50),90,0,270,255,2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img),
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.ellipse(img,center,axes,angle,start_angle,end_angle,color,thickness,line_type,shift),img是操作的图片、center是椭圆的中心的,axes是椭圆的长轴和短轴、angle是偏转角度、start_angle和end_angle分别是圆弧的起始角度和终结角度、color是线条颜色、thickness是线条粗细程度、line_type是线条的类型、shift是圆心坐标点和数轴的精度。

五、画多边形

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

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
pts=np.array([[20,20],[350,40],[420,400],[60,420]], np.int32)
pts=pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,0),2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.polylines(img,[pts],iscolse,color,thickness)函数,其中第二个参数是多边形顶点的集合,第三个参数是首尾点是否连接。需要注意的是,多边形的连接是与集点的顺序保持一致的。如我修改下第五行集点的顺序,会得到不一样的图。
pts=np.array([[20,20],[350,40],[60,420],[420,400]], np.int32)

六、给图片添加文字

import numpy as np
import cv2 img=np.zeros((512,512,3), np.uint8)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,250), font, 4,(255,255,255),2)
cv2.imshow('opencv',img)
cv2.imwrite('/home/wl/1.jpg',img)cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.putText(img,word,position,font,size,color,thickness)函数中,第二个参数是输入的文字,第三个参数是文字的位置,第四个参数是字体类型,第五个参数是字体大小。

特别注意的是,所 有 的 绘 图 函 数 的 返 回 值 都 是 None, 所 以 不 能 使 用 img =cv2.line(img,(0,0),(511,511),(255,0,0),5)。

Opencv笔记(四)——绘图函数的更多相关文章

  1. OpenCV中的绘图函数-OpenCV步步精深

    OpenCV 中的绘图函数 画线 首先要为画的线创造出环境,就要生成一个空的黑底图像 img=np.zeros((512,512,3), np.uint8) 这是黑色的底,我们的画布,我把窗口名叫做i ...

  2. 5、opencv中的绘图函数

    1.目标 a.学习使用 OpenCV 绘制不同几何图形 b. 你将会学习到这些函数: cv2.line(), cv2.circle(), cv2.rectangle(),cv2.ellipse(),c ...

  3. OpenCV中的绘图函数

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

  4. OpenCV笔记:pyrDown()函数和pryUp()函数的使用

    OpenCV实现了用于创建图像金字塔的两个函数pyrDown()和pryUp(). 图像金字塔是一种经典的图像多尺寸描述方法,它将降采样和平滑滤波结合在一起,对图像进行多尺度表示.图像金字塔由不同尺寸 ...

  5. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

  6. scala 学习笔记四 匿名函数

    1.介绍 Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体. 使用匿名函数后,我们的代码变得更简洁了. 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var ...

  7. OpenCV绘图函数

    OpenCV几个绘图函数 矩形 rectangle(Mat& img,Point pt1, Point pt2, const Scalar&color, int thickness=1 ...

  8. OpenCV3入门(三)基本绘图函数

    1.函数原型 /** @brief Draws a line segment connecting two points.*/ CV_EXPORTS_W void line(InputOutputAr ...

  9. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

随机推荐

  1. 用豆瓣加速安装pandas、numpy、matplotlib(画图)

    安装pandas.numpy会同时被安装 #pthony2.x,用豆瓣加速安装pandas pip install -i https://pypi.doubanio.com/simple/ panda ...

  2. CSU 1425 NUDT校赛 I题 Prime Summation

    这个题本来有希望在比赛里面出了的 当时也想着用递推 因为后面的数明显是由前面的推过来的 但是在计算的时候 因为判重的问题 ...很无语.我打算用一个tot[i]来存i的总种树,tot[i]+=tot[ ...

  3. 吴裕雄--天生自然Django框架开发笔记:Django简介

    Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python写成. ...

  4. SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

    第3章 聚合与排序:3-3 为聚合结果指定条件 ● 使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句.● 聚合函数可以在SELECT子句. ...

  5. 怎么调出原生态launcher

    adb shell am start -n com.android.launcher3/.Launcher

  6. @JsonIgnoreProperties 不生效

    定义类如下, import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annota ...

  7. MySQL--基础SQL--DDL

    1.创建数据库 CREATE DATABASE dbname 例: CREATE DATABASE test 2.选择要操作的数据库 USE dbname 例: USE test 3.删除数据库 DR ...

  8. 拷贝构造函数[c++]

    拷贝构造函数何时会被调用? 1. 对象以值传递的方式传入函数参数 2.对象以值传递的方式从函数返回 3.对象需要通过另外一个对象进行初始化 下面我们来看代码: //#include <iostr ...

  9. usr/sbin/inetd

    root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd 运行 Internet 超级 服务器,它负责监听 Internet sockets 上的连接,并调 ...

  10. mysql6数据库安装与配置

    详细步骤可以参考这篇文章 https://www.cnblogs.com/duguangming/p/10623520.html 1.下载并打开mysql6数据库安装文件 2.默认点击下一步 3.点击 ...