前提描述:關(guān)于目標(biāo)檢測(cè)方面,在做實(shí)際項(xiàng)目時(shí),現(xiàn)實(shí)場(chǎng)景中遇到的環(huán)境相較于樣本集來(lái)說(shuō)可能會(huì)復(fù)雜很多遍坟,比如我所做的橋梁表觀病害檢測(cè),拍攝的圖片中許多圖片里面是沒(méi)有病害的晴股,而且存在許多與要檢測(cè)病害相似的樣本愿伴,所以如果不做負(fù)樣本的話,就會(huì)存在很多誤檢的樣本產(chǎn)生电湘;于是我們就需要將許多沒(méi)有病害的圖片來(lái)制作負(fù)樣本隔节,而這些負(fù)樣本如果數(shù)量龐大的話,手工制作將會(huì)是很大的體力活寂呛,所以我們就需要用代碼來(lái)解決怎诫;
代碼功能:提供需要做標(biāo)簽的圖片,就能生成對(duì)應(yīng)的”無(wú)坐標(biāo)“的xml文件用于訓(xùn)練贷痪,代碼如下:
#! /usr/bin/python
# -*- coding:UTF-8 -*-
import os, sys
import glob
from PIL import Image
# VEDAI 圖像存儲(chǔ)位置
src_img_dir = "/home/lehui/Desktop/負(fù)樣本700"
# VEDAI 圖像生成的xml文件存放位置
src_xml_dir = "/home/lehui/Desktop/xml"
img_Lists = glob.glob(src_img_dir + '/*.jpg')
img_basenames = [] # e.g. 100.jpg
for item in img_Lists:
img_basenames.append(os.path.basename(item))
img_names = [] # e.g. 100
for item in img_basenames:
temp1, temp2 = os.path.splitext(item)
img_names.append(temp1)
for img in img_names:
im = Image.open((src_img_dir + '/' + img + '.jpg'))
width, height = im.size
# write in xml file
#os.mknod(src_xml_dir + '/' + img + '.xml')
xml_file = open((src_xml_dir + '/' + img + '.xml'), 'w')
xml_file.write('<annotation>\n')
xml_file.write(' <folder>VOC2007</folder>\n')
xml_file.write(' <filename>' + str(img) + '.jpg' + '</filename>\n')
xml_file.write(' <path>'+ src_xml_dir + '/' + str(img) + '.jpg' + '</path>\n')
xml_file.write(' <source>\n')
xml_file.write(' <database>' + "Unknow" + '</database>\n')
xml_file.write(' </source>\n')
xml_file.write(' <size>\n')
xml_file.write(' <width>' + str(width) + '</width>\n')
xml_file.write(' <height>' + str(height) + '</height>\n')
xml_file.write(' <depth>3</depth>\n')
xml_file.write(' </size>\n')
xml_file.write(' <segmented>0</segmented>\n')
xml_file.write('</annotation>')
結(jié)果如圖所示:
結(jié)果展示---xml.png
喜歡就點(diǎn)個(gè)贊(≧▽≦)/幻妓!