首页 > 编程知识 正文

python文件读写用到的库,python读取文件某一列

时间:2023-05-04 07:09:41 阅读:173357 作者:2981

角色:

1 .导入图像和标记后的xml文件,并将标记信息写入txt文件。 生成的txt文件位于txt文件夹下,可直接用于训练目标检测算法,如yolo3。

2. txt文件包含图像的路径、注释框的位置和大小以及注释的类别。

3 .可以对标记的图像进行分割,用于行人属性识别。 分割后的图像保存在segmentation文件夹下。

数据集准备:

1 .必须将数据集放在dataset路径下。

2. Annotations保存xml文件,JPEGImages保存图像。

修正:根据需要进行适当的修正。 以下说明:

第一个:

class_tab={

' human':1 ##这是一个类别。 如果有多个类别,则可以添加多个类别

}

第二:

params={ ' XML _ prefix ' : './dataset/annotations/',##请注意,这是XML源文件的路径前缀,末尾有“/”

' img _ prefix ' : ' ./dataset/JPEG images/',##请注意,这是图像源文件的路径前缀,末尾有“/”

' seg _ prefix ' : ' ./segmentation/',##请注意,这是存储分割图像的位置前缀,末尾有“/”

}

第三个:

f=open('./txt/train.txt ',' a'##这是生成的txt文件的路径。

下面附上所有源代码

第一个是main.py

导入系统

# sys.path.remove (/opt/ROS/kinetic/lib/python 2.7/dist-packages ) )

导入cv2

import os

from readxml import *

class_tab={

' humanimport sys

# sys.path.remove (/opt/ROS/kinetic/lib/python 2.7/dist-packages ) )

导入cv2

import os

from readxml import *

class_tab={

' human':1

}

params={ ' XML _ prefix ' : './dataset/annotations/',

' img _ prefix ' : './dataset/JPEG images/',

' seg _ prefix ' : './segmentation/',

}

efwrite_line(f,img_path,boxes ) :

f.write('%s'% ) img_path ) )

for box in boxes:

f.write(str ) box['cls'] )、')

f.write(str ) box['Xmin ' ',' ]

f.write(str ) box['ymin ' ',' ]

f.write(str ) box['xmax ' ',' ]

f.write(str ) box['ymax'] )

f.write (' ) )

f.write((n ) ) ) )。

f.flush () )

efsegment(img_path,imgname,boxes ) :

img=cv2.imread(img_path,cv2.IMREAD_COLOR ) )。

cnt=0

for box in boxes:

seg=img [ int ] box [ ' ymin ' ] ] : int [ ' ymax ' ],int [ ' xmin ' ] ] : int [ ' box [ ' xmax ' ] ]

cv2.im write (params [ ' seg _ prefix ' ] imgname ' _ ' str (CNT ).jpg ',seg ) ) ) ) ) )。

cnt=cnt 1

戴尔主(:

f=open('./txt/train.txt ',' a ' ) )。

img _ list=OS.list dir (params [ ' img _ prefix ' ) ]

for il in img_list:

img _ path=params [ ' img _ prefix ' ] il

tokens=il.split ('.' )

XML _ path=params [ ' XML _ prefix ' ] tokens [0] '.XML '

IFOS.path.isfile(img_path )==False:

raisevalueerror (' % sdoesnotexits!' %img_path )

else:

打印(reading :img_path ) ) ) ) ) ) ) ) ) ) ) )。

boxes=XML_reader(XML_path,class_tab ) ) ) )。

write_line(f,img_path,boxes ) )。

Segment(img_path,tokens[0],boxes ) ) ) ) ) )。

f.close () )

if __name__=='__main__':

main () )

' :1

}

params={ ' XML _ prefix ' : './dataset/annotations/',

' img _ prefix ' : './dataset/JPEG images/',

' seg _ prefix ' : './segmentation/',

}

efwrite_line(f,img_path,boxes ) :

f.write('%s'% ) img_path ) )

for box in boxes:

f.write(str ) box['cls'] )、')

f.write(str ) box['Xmin ' ',' ]

f.write(str ) box['ymin ' ',' ]

f.write(str ) box['xmax ' ',' ]

f.write(str ) box['ymax'] )

f.write (' ) )

f.write((n ) ) ) )。

f.flush () )

efsegment(img_path,imgname,boxes ) :

img=cv2.imread(img_path,cv2.IMREAD_COLOR ) )。

cnt=0

for box in boxes:

seg=img [ int ] box [ ' ymin ' ] ] : int [ ' ymax ' ],int [ ' xmin ' ] ] : int [ ' box [ ' xmax ' ] ]

cv2.im write (params [ ' seg _ prefix ' ] imgname ' _ ' str (CNT ).jpg ',seg ) ) ) ) ) )。

cnt=cnt 1

戴尔主(:

f=open('./txt/train.txt ',' a ' ) )。

img _ list=OS.list dir (params [ ' img _ prefix ' ) ]

for il in img_list:

img _ path=params [ ' img _ prefix ' ] il

tokens=il.split ('.' )

XML _ path=params [ ' XML _ prefix ' ] tokens [0] '.XML '

IFOS.path.isfile(img_path )==False:

raisevalueerror (' % sdoesnotexits!' %img_path )

else:

打印(reading :img_path ) ) ) ) ) ) ) ) ) ) ) )。

boxes=XML_reader(XML_path,class_tab ) ) ) )。

write_line(f,img_path,boxes ) )。

Segment(img_path,tokens[0],boxes ) ) ) ) ) )。

f.close () )

if __name__=='__main__':

main () )

第二,readxml.py

from XML.DOM.minidomimportdocument

import XML.etree.element treea set

efXML_reader(fname,cls_tab ) 3:###,classes_merge_list,classes_merged_name ) 3360

in_file=open(fname )

tree=et.parse(in_file )

root=tree.getroot (

boxes=[]

foriteminroot.ITER(item ) ) :

cls=item.find('name ' ).text

if cls in cls_tab:

bndbox=item.find(bndbox ) )。

b={

' xmin':str(int(bndbox.find ) xmin ).text ),

' ymin':str(int(bndbox.find ) ymin ).text ),

' xmax':str(int(bndbox.find ) xmax ).text ),

' ymax':str(int(bndbox.find ) ymax ).text ),

' cls': cls_tab[cls]

}

Boxes.append(b ) )。

else:

continue

返回盒

if __name__=='__main__':

cls_tab={'human':1}

fname='/home/ta/downloads/Li qiming _ label/dataset/annotations/sa 341.XML '

box=XML_reader(fname,cls_tab ) )。

是打印(盒)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。