关于yolov8segments的一些使用

近半个月来,研究yolov8的segments部分,有一些小收获,分享给大家。

在探索这个算法的时候,有一个问题困扰了我很长时间。

前提:在输入图片的过程中,你给的图片格式可能不是统一的,比如说,有的图片是100*100、200*200、300*300,在给到网络计算后,会有一些操作改变图像的格式,给到一个较为统一格式比如640*480.而输出的时候,返回的仍然是你自己的(100*100、200*200、300*300)格式。

问题来了:算法的计算大部分是在统一格式上面计算的。

输出的结果不能直接在原格式上面改,不得不在统一格式上面更改,这就比较麻烦了

当然这个问题不仅在yolov8算法中,在很多视觉算法中都是存在的。

好啦,正题开始:

图一

        stone_info = {}  # 这里存储所有的信息
        w = im0.shape[1]  # width
        h = im0.shape[0]  # height
        w1 = im.shape[3]
        h1 = im.shape[2]
        gain1 = min(w1 / w, h1 / h)  # gain  = old / new

        #segments是掩码的轮廓像素坐标
        segments123= result.masks.segments

        #cls_num是掩码的class代号
        cls_num = result.boxes.cls

        #掩码class代号对应的class名
        cls_name = result.names

        #掩码
        masks1 = result.masks.masks
        a = centroid(masks1,gain1)

                                                        图二

yolov8是计算是将所有的结果放在result中,可以在编译的过程中查看,当然,这些结果都是在统一格式上的结果。

上面的问题是计算的图像和输出图像格式的不统一,为了让问题更直观点,直接上图:

这张图先被压缩,之后鸭子就跑到那个蓝色的地方,so.....

解决这个问题的关键是什么呢,就是gain,在图二中有计算方法。

你获得的所有像素坐标都可以通过*gain获得在原图中的坐标。

boom!

我这表达能力欠缺.......唉

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值