opencv 画多边形
pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32) #多边形的四个顶点,类型为int32
pts = pts.reshape((-1, 1, 2)) #将多边形的顶点变为n维数组,-1代表n维已经确定,(自适应维度大小)
#reshape((-1, 1, 2))是将原来pts由4 ×2变为4×1×2的数组
cv.polylines(img, [pts], False, (0, 255, 255))
# 对于polylines函数,第一个参数,img是你要的图像,
#第二个参数,是多边形顶点坐标
#第三个参数,如果第三个参数为False,您将获得一条连接所有点的折线,而不是闭合形状。
#第四个参数为颜色
再画一组作为对比
pts1 = np.array([[80, 80], [80, 85], [90, 90], [85, 80]], np.int32)
#
pts1 = pts1.reshape((-1, 1, 2))
cv.polylines(img, [pts1], True, (0, 0, 255))
# 这是pts
[[10 5]
[20 30]
[70 20]
[50 10]]
这是pts.reshape((-1, 1, 2))
[[[10 5]]
[[20 30]]
[[70 20]]
[[50 10]]]
对比图像如下:
向图像添加文字
要将文本放入图像中,需要指定以下内容。 - 您要写入的文字数据 - 您要放置它的位置坐标(即数据开始的左下角)。 - 字体类型(检查cv.putText文档以获取受支持的字体) - 字体比例(指定字体大小) - 常规的内容,例如颜色,厚度,线条类型等。为了获得更好的外观,建议使用lineType = cv.LINE_AA。
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2, cv.LINE_AA)
对于函数putText
img:图像名称
'OpenCV':写入的文字
(10, 500):文字的位置坐标
font:字体类型
4:文字的尺寸大小
(255, 255, 255):颜色
2:线条宽度
cv.LINE_AA:线条类型
对比如下:
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, 'OpenCV', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)
cv.putText(img, 'OpenCV', (10, 500), font, 4, (0, 255, 255), 6, cv.LINE_AA)