cv.polylines
pts = np.array([[10,5], [20,30], [70,20], [50,10]], np.int32)
pts = pts.reshape(-1, 1, 2) #只画出四边形的点 相当于把一个点作为一个四边形画
pts = pts.reshape(-1, 4, 2) #画出了四边形 一个四边形需要四个点 所以第二维应该为4 包含四个点的坐标,第三维为2 表示坐标含两个元素x,y
cv.polylines(img, pts, isClosed=True, color= (0,0,255), lineType=4, thickness=3)
先放着,先去了解一下array
[ [] ]二维数组
[ [ [] ] ] 三维数组
[ [ [......] ] ]n维数组
举例
shape(2,3) 表示为数组的意思是第一维有两个元素,第二维有三个元素,如: [[1,2,3],[4,5,6]]
第一维(第一个方括号内的元素个数) [[第一个元素],[第二个元素]]
第二维(第二个方括号内的元素个数) [1,2,3]内有三个元素 1 2 3
举例
shape = (1,3,3)格式对应如下
[[[ 1,2,3]
[ 4,5,6]
[ 7,8,9]]]
举例(重点理解)
shape = (1,3,3,1) 对应
[[[[1]
[2]
[3]]
[[4]
[5]
[6]]
[[7]
[8]
[9]]]]
最后一维内元素只有1个,比如[1]内只有一个元素1
倒数第二维内元素有3个,比如[ [1] [2] [3] ]内有三个元素[1] [2] [3]
所以shape = (1,3,3,1) 后两个参数为 3和1
练习
pts = np.array([[1.,2.,3.], [4.,5.,6.], [7.,8.,9.]], np.int32)
b=a.reshape(1,3,3,2)
shape = (1,3,3,2)对应
[[[[ 1 2 ]
[ 3 4 ]
[ 5 6 ]]
[[ 7 8 ]
[ 9 9 ]
[ 9 9 ]]
[[ 9 9 ]
[ 9 9 ]
[ 9 9 ]]]]
shape中维数为4,至少有1 × 3 × 3 × 2 = 18个数字,如果所给数组中少于18个数字的话就用最后一个数字进行填充
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/17812609.html