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个数字的话就用最后一个数字进行填充

posted @ 2022-04-19 21:47  变秃了也就变强了  阅读(13)  评论(0编辑  收藏  举报  来源