opencv从入门到放弃---绘图函数

opencv中的绘图函数需要设置下面这些参数

  • img:你想要绘制图形的那副图像
  • color:形状的颜色
  • thickness:线条的粗细,如果给定的是一个闭合图形设置为-1, 那么这个图形就会被填充;默认值为1
  • linetype:线条的类型,8连接,抗锯齿等等;默认是8连接;cv2.LINE_AA为抗锯齿,这样看起来会非常平滑

注:之前看的书上说所有的绘图函数的返回值必须是None,但是直接返回也好使,不知道。。。

画线

要画一条线,你只需要告诉函数这条线的起点和终点

import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
line = cv.line(image, (0, 0), (511, 511), (255, 0, 0), 5)
cv.imshow('image', line)
cv.imwrite('D:/2019-02/image-1.jpg', line)
cv.waitKey(0)

opencv从入门到放弃---绘图函数

画矩形

需要告诉函数左上角和右下角顶点的坐标

import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
rectangle = cv.rectangle(image, (130, 130), (511, 511), (255, 0, 0), 5)
cv.imshow('image', rectangle)
cv.imwrite('D:/2019-02/image-1.jpg', rectangle)
cv.waitKey(0)

opencv从入门到放弃---绘图函数

画圆

需要指定圆形的中心点坐标和半径的大小

import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
circle = cv.circle(image, (130, 130), 30, (255, 0, 0), -1)
cv.imshow('image', circle)
cv.imwrite('D:/2019-02/image-1.jpg', circle)
cv.waitKey(0)

opencv从入门到放弃---绘图函数

画椭圆

画椭圆比较复杂,我们需要对输入几个参数,一个参数是中心点的坐标,下一个参数是长轴和短轴的长度,椭圆沿逆时针方向旋转的角度,椭圆弧沿顺时针方向起始的角度和结束角度,如果是0和360,那就是整个椭圆

import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
ellipse = cv.ellipse(image, (256, 256), (100, 50), 30, 0, 180, (255, 0, 0), -1)
cv.imshow('image', ellipse)
cv.imwrite('D:/2019-02/image-1.jpg', ellipse)
cv.waitKey(0)

运行结果:

opencv从入门到放弃---绘图函数

PS:偏移角度是按照顺时针方向偏移的吧

画多边形

画多边形需要指定每个顶点的坐标

import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
poly = cv.polylines(image,[pts],True,(0,255,255))
cv.imshow('image', poly)
cv.imwrite('D:/2019-02/image-1.jpg', poly)
cv.waitKey(0)

opencv从入门到放弃---绘图函数

当然这么一个图像也可以通过line函数进行操作,但是有一些麻烦

给图片添加数字

要在图片上添加数字,你需要设置下面参数:

  • 你要绘制的文字
  • 你要绘制的位置
  • 字体类型
  • 字体的大小
  • 文字的一般属性,如颜色、粗细、线条的类型等等,为了更好看一点推荐使用linetype=cv2.LINE_AA
import cv2 as cv
import numpy as np

image = cv.imread('D:/2019-02/lena.jpg')
font = cv.FONT_HERSHEY_SIMPLEX
text = cv.putText(image, 'opencv', (10, 256), font, 4, (255, 255, 255), 2)
cv.imshow('image', image)
cv.imwrite('D:/2019-02/image-1.jpg', text)
cv.waitKey(0)

opencv从入门到放弃---绘图函数