用Python写一个图片标注工具

作者: 听风轻咛 | 来源:发表于2018-12-27 17:00 被阅读0次

    程序补充库

    # tkinter
    $ sudo apt intall python-tk
    
    # PIL (Python Image Library)
    $ sudo apt-get install python-imaging
    # 上面的命令如果不行的话
    $ sudo apt-get install python-pil
    
    # 需要安装python-imaging-tk
    $ sudo apt install python-imaging-tk
    

    过程很重要

    我们要实现一个点击输入框就弹出文件夹选择的界面,然后点击确定就把取到的文件路径显示在文本框上面;
    点击输入框的方法没有找到,为方便起见我们写了一个按钮专门用来调起系统文件夹;

    import tkFileDialog
    
    # 调取系统文件选择框
    dirPath_ = tkFileDialog.askdirectory()
    
    # 如果是选取文件,则应该是
    filePath_ = tkFileDialog.askopenfilename(title=u'choose file', initialdir=(os.path.expanduser("默认打开路径")))
    
    # 文本框清除并重新填写文字
    entry.delete(0, END)
    entry.insert(END, "要显示的内容")
    

    接下来我们要对选择的路径下的图片进行操作,理论上这里应该考虑多种图片格式以增加程序健壮性,但是这里我们不作扩展,这就涉及到了一种编程的思想,“增量式编程————罗马不是一天建成的”(一本正经的胡说八道)。

    虽然我们这里不做其他图片格式的考虑,但是我们需要给出提示,所以我们要进行某种警告来告诉我们的小白使用者,“你错了!”;

    import tkMessageBox
    # 非常简单,就一句话
    tkMessageBox.showerror("Error!", message='究竟做错了什么')
    

    路径的问题解决之后,我们就要加载图片了,这部分使用了github上的一部分代码,稍候我们慢慢讲解;

    from Tkinter import *
    from PIL import Image, ImageTk
    # load image
    imagepath = image_path
    pil_image = Image.open(imagepath)
    
    # get the size of the image
    #获取图像的原始大小
    global w0,h0
    w0, h0 = pil_image.size
    
    #缩放到指定大小
    pil_image = pil_image.resize((DEST_SIZE[0], DEST_SIZE[1]), Image.ANTIALIAS)
    self.tkimg = ImageTk.PhotoImage(pil_image)
    
    self.mainPanel = Canvas(self.frame, cursor='tcross')
    self.mainPanel.config(width = max(self.tkimg.width(), 400), height = max(self.tkimg.height(), 400)) 
    self.mainPanel.create_image(0, 0, image = self.tkimg, anchor=NW)
    

    到这里,我们的图片已经加载成功,下面我们要做的是标定,就是框出我们要标识的真实物品;

    这里顺便说一下我们接下来的产品需求,我们的图片是一组照片,照片内容是一个物体,我们在第一张照片上标定要tracking的物品,既而使用其他工具把接下来的其他图片的该物品全部标定出来;

    拉下来我们要做的是用框标定第一张图片内容,并将所标定的数据记录下来;

    self.mainPanel.bind("<Button-1>", self.mouseClick)
    def mouseClick(self, event, save=True):
        print event.x, event.y
    

    数据标计已完成,然后我们就到了本文最重要的部分,使用深度学习网络框架对图片进行tracking,这里我们选用的是py-MDNet,有关于该框架的论文可以看一下 这里

    网络标定请看下节;

    py-MDNet环境

    Python2.7下安装matplotlib

    sudo apt-get build-dep python-matplotlib --fix-missing
    
    git clone git://github.com/matplotlib/matplotlib.git
    cd matplotlib
    python -mpip install
    # 说一下这里的-mpip 
    
    pip install matplotlib==2.1.2 # (3.0.2)
    

    我们在服务器上使用scp命令进行文件下载时,使用ipv6地址时需要注意ip位置需要转义;

    scp username@\[ipv6 host\]:/filepath localpath
    

    py-MDNet过程

    这部分内容略过,本篇主要讲UI部分内容;说一下该网络主要做了一个图像的tracking工作,具体请见py-MDNet

    图片标识还没完

    这篇就先写到这吧,持续时间有点久,接下来内容后续另写一篇进行补充。

    相关文章

      网友评论

        本文标题:用Python写一个图片标注工具

        本文链接:https://www.haomeiwen.com/subject/yuhdlqtx.html