15行Python代码 实现图像定位

简介: 15行Python代码 实现图像定位

阅读本文需要5.5分钟


本教程使用的环境:Windows 10    Python 3.6  

数据源:The Oxford-IIIT Pet Dataset


需要的第三方库:

    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    from lxml import etree
    import glob
    from matplotlib.patches import Rectangle



    单张图片定位


    1 读取图片:(这里使用tensflow的方法读取)


    img = tf.io.read_file(r'\xxxxxxxx.jpg')

    2 解码图片:


    img = tf.image.decode_jpeg(img)

    3 显示下读取的图片


    plt.imshow(img)



    4 解析图片规格信息(这里是一个xml文件,我们使用爬虫将其图片信息爬取下来)

    文件格式如图:

      xml = open(r'xxxxxxx.xml').read()
      sel = etree.HTML(xml)
      width = int(sel.xpath('//size/width/text()')[0])
      height = int(sel.xpath('//size/height/text()')[0])
      xmin = int(sel.xpath('//bndbox/xmin/text()')[0])
      ymin = int(sel.xpath('//bndbox/ymin/text()')[0])
      xmax = int(sel.xpath('//bndbox/xmax/text()')[0])
      ymax = int(sel.xpath('//bndbox/ymax/text()')[0])

      5 定位

        plt.imshow(img)
        rec = Rectangle((xmin, ymin), (xmax-xmin), (ymax-ymin), fill=False, color='red')
        ax = plt.gca()
        ax.axes.add_patch(rec)

        输出:




        二 统一规划


        先给大家上一张图

        所有

        这是部分数据集图片,这里的图片大小不一,有的是长的有的是宽的。但是在创建data数据时,所有的图片数据应是统一的(也就是同长同高)所以我们得想个办法让其统一。

        由上面的案例我们知道头部的位置由 (xmin, ymin), (xmax-xmin), (ymax-ymin)所决定,所以我们可以通过“放缩”的思想来实现目标值


        1 统一图片大小(224,224):


        img = tf.image.resize(img, [224,224])
        img = img/255
        plt.imshow(img)



        2 确定相对于的目标值:


        xmin = (xmin/width)*224
        ymin = (ymin/height)*224
        xmax = (xmax/width)*224
        ymax = (ymax/height)*224

        3 定位:


        plt.imshow(img)
        rec = Rectangle((xmin, ymin), (xmax-xmin), (ymax-ymin), fill=False, color='red')
        ax = plt.gca()
        ax.axes.add_patch(rec)

        输出:


        这时就可以把所有数据集导入训练,建立管道,训练成模型。(建议使用GPU版本)

        若需要数据集,则在后台回复【数据集】即可获取

        相关文章
        |
        11月前
        |
        存储 算法 调度
        【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
        【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
        487 26
        |
        10月前
        |
        测试技术 Python
        Python装饰器:为你的代码施展“魔法”
        Python装饰器:为你的代码施展“魔法”
        407 100
        |
        10月前
        |
        开发者 Python
        Python列表推导式:一行代码的艺术与力量
        Python列表推导式:一行代码的艺术与力量
        628 95
        |
        11月前
        |
        Python
        Python的简洁之道:5个让代码更优雅的技巧
        Python的简洁之道:5个让代码更优雅的技巧
        430 104
        |
        11月前
        |
        开发者 Python
        Python神技:用列表推导式让你的代码更优雅
        Python神技:用列表推导式让你的代码更优雅
        725 99
        |
        10月前
        |
        缓存 Python
        Python装饰器:为你的代码施展“魔法
        Python装饰器:为你的代码施展“魔法
        552 88
        |
        10月前
        |
        监控 机器人 编译器
        如何将python代码打包成exe文件---PyInstaller打包之神
        PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
        1679 68
        |
        11月前
        |
        设计模式 人工智能 API
        AI智能体开发实战:17种核心架构模式详解与Python代码实现
        本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
        1119 7
        |
        11月前
        |
        存储 大数据 Unix
        Python生成器 vs 迭代器:从内存到代码的深度解析
        在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
        481 2
        |
        11月前
        |
        JSON 缓存 开发者
        淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
        本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。

        推荐镜像

        更多