前言
LabelImg是一个图形图像注释工具。
它是用Python编写的,并使用Qt作为其图形界面。
注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。
详细内容见https://github.com/tzutalin/labelImg。
安装labelImg
系统为Ubuntu,Python版本不同,安装方式也不同。
Python 2 + Qt4
sudo apt-get install pyqt4-dev-tools
sudo pip install lxml
git clone https://github.com/tzutalin/labelImg.git
cd labelImg
make all
python labelImg.py #打开labelImg
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
Python 3 + Qt5
sudo apt-get install pyqt5-dev-tools
sudo pip3 install lxml
git clone https://github.com/tzutalin/labelImg.git
cd labelImg
make all
python3 labelImg.py #打开labelImg
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
使用labelImg
使用方法很简单。
Open
可导入单张图片。Open Dir
可打开文件夹目录,然后可以用Next Image
和Prev Image
查看所有图片。Change Save Dir
可以更改xml文件保存的路径。Verify Image
可更改xml文件的内容。Save
可保存xml文件。
下图为标注一张图片后的效果。

保存的xml文件内容如下:
<annotation>
<folder>桌面</folder>
<filename>d3738a0d75.jpg</filename>
<path>/home/qq/桌面/d3738a0d75.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>0</width>
<height>0</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>person</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>65</xmin>
<ymin>55</ymin>
<xmax>222</xmax>
<ymax>350</ymax>
</bndbox>
</object>
<object>
<name>person</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>215</xmin>
<ymin>1</ymin>
<xmax>374</xmax>
<ymax>350</ymax>
</bndbox>
</object>
</annotation>
遇到的问题
在https://tzutalin.github.io/labelImg/下载Linux版本的文件,解压后运行。
导入图片,标注,保存,会报以下错误。所以建议用以上的方式安装。
Traceback (most recent call last):
File "labelImg/labelImg.py", line 1151, in openFile
File "labelImg/labelImg.py", line 928, in loadFile
File "posixpath.py", line 105, in splitext
File "genericpath.py", line 91, in _splitext
AttributeError: 'QString' object has no attribute 'rfind'
Traceback (most recent call last):
File "labelImg/labelImg.py", line 1166, in saveFile
File "labelImg/labelImg.py", line 1187, in _saveFile
File "labelImg/labelImg.py", line 713, in saveLabels
UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)