Tic商业评论

关注微信公众号【站长自定义模块】,定时推送前沿、专业、深度的商业资讯。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

OpenCV中的绘图函数

0
回复
6516
查看
[复制链接]
已绑定手机

49

主题

4

回帖

1228

积分

管理员

积分
1228
QQ
来源: 2021-6-24 20:54:05 显示全部楼层 |阅读模式
目标

代码

在上面所说的函数中主要用到参数如下:

  • img:    要绘制形状的图像
  • color: 形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)表示蓝色。对于灰度,只需传递标量值即可
  • thickness:线或圆等的厚度。如果**-1**对于封闭的图形如圆,它将填充形状。缺省thickness=1
  • lineType:线的类型,是否为8连接线,抗锯齿线等。默认情况下,为8连接线。**cv.LINE_AA**给出了抗锯齿的线条,看起来非常适合曲线。


画线


要画一条线,需要传递直线的起始坐标和结束坐标。我们将创建一个黑色图像,并在上面画一条从左上角到右下角的蓝色线。
import numpy as np

import cv2 as cv

# Create a black image

img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px

cv.line(img,(0,0),(511,511),(255,0,0),5)


画矩形

要绘制矩形,需要矩形的左上角和右下角.这一次,我们将画一个绿色的矩形在右上角的图像.
#画矩形

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


画圆

要画一个圆,你需要它的中心坐标和半径。我们将在上面画的矩形内画一个圆圈。
#画圆

cv.circle(img,(447,63), 63, (0,0,255), -1)


画椭圆


要绘制椭圆,我们需要传递几个参数。一个参数是中心位置(x,y)。下一个参数是轴长(长轴长、短轴长)。角是椭圆逆时针方向旋转的角度.起始角和端角表示从长轴顺时针方向测量的椭圆弧的开始和结束。也就是说,给定值0和360表示整个椭圆。有关更多细节,请查看cv.ellipse()的文档。下面的例子在图像的中心画一个半椭圆
#画椭圆

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


画边形
要绘制多边形,首先需要顶点的坐标。将这些点变成一个ROWSx1x2形状数组,其中行是顶点的数目,并且应该是int 32类型。在这里,我们画了一个小多边形的四个顶点黄色。
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

cv.polylines(img,[pts],True,(0,255,255))
注:如果第三个参数是错误的,你将得到一个多线连接所有的点,而不是一个封闭的形状。Cv.polyline()可用于绘制多条线。只需创建要绘制的所有线条的列表,并将其传递给函数。所有的线都将单独划出。这是一种比为每一行调用cv.line()更好和更快的绘制一组线条的方法。


向图像添加文本:
要将文本放入图像中,需要指定以下内容:
  • 要写入的文本数据
  • 要放置它的位置坐标(即数据开始的左下角)。
  • 字体类型(选中cv.putText()docs以获得支持的字体)
  • 字体刻度(指定字体大小)
  • 为了更好的外观,推荐使用 lineType = cv.LINE_AA


我们将在图像上写白色的OpenCV。


结果
看看我们画的最后结果了。
drawing_result.jpg

追:
椭圆函数中使用的角度不是我们的圆角。有关更多细节,请访问此 this discussion讨论。

练习:
尝试使用OpenCV中可用的绘图功能创建OpenCV的徽标。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
电话咨询: 135xxxxxxx
关注微信