cv.polylines

这篇博客探讨了numpy数组的reshape方法在绘制四边形中的应用。通过实例解释了如何将数组从二维转换为三维,以适应OpenCV的polylines函数,用于画出封闭的四边形。文章详细阐述了数组形状的变化以及每个维度的含义,并展示了如何填充不足的元素。
摘要由CSDN通过智能技术生成
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个数字的话就用最后一个数字进行填充

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值