………………………………哈哈 2023-10-06 10:17 采纳率: 86.7%
浏览 9

为什么这个函数求中心点坐标的时候要-1?

img

这里面的x,y最后都要-1是为什么?有没有人能解答一下?急!

  • 写回答

1条回答 默认 最新

  • 梦幻精灵_cq 2023-10-06 17:37
    关注
    • 您得隆重介绍下转换函数的形参size、box要代入的实参,晓得两个实参她们俩是个啥,才好分析函数中的x、y变量为啥子都要-1。

    • 复刻您截图中的convert函数,得不到正确结果。
      如:size, box = (3, 3), (1, 4, 1, 4)
      输出:

      img


      实参图形

      img


      很显然,输出不对!我认为算法设计有问题。

    def convert(size, box):
        dw, dh = 1./size[0], 1./size[1]
        x = (box[0] + box[1])/2.0 - 1
        y = (box[2] + box[3])/2.0 - 1
        w = box[1] - box[0]
        h = box[3] - box[2]
        x *= dw
        w *= dw
        y *= dh
        h *= dh
        
        return x, y, w, h
    
    
    • 应该是——

      img

    代码

    #!/sur/bin/nve python
    # coding: utf-8
    
    
    def convert(size, box):
        w, h = size # 框宽高可以直接赋值。
        x1, x2, y1, y2 = box # (x1, y1)、(x2, y2)框左上角右下角坐标赋值变量,方便计算。
        
        x = abs(x1-x2)/2 + x1 # 计算x轴,起点x值+框宽一半。
        y = abs(y1-y2)/2 + y1 # 计算y轴,起点y值+框高的一半。
        
        return (x, y), w, h
    
    
    if __name__ == '__main__':
        size, box = (3, 3), (1, 4, 1, 4)
        #size, box = (4, 3), (1, 5, 1, 4)
        print(convert(size, box))
    
    
    • 实参size, box = (4, 3), (1, 5, 1, 4)
      实参图形

      img


      输出

      img


    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月6日

悬赏问题

  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?