작성
·
144
0
sample_xml 관련 코드라든지 몇개의 영상속 코드가 실제 jupyter notebook에 없고 장문의 코드 2개가 있는데요.. 이게 혹시 어떻게 된건지 궁금합니다..
답변 5
1
0
0
그렇네요 xmltodict 를 사용하지않고 xml.etree.ElementTree를 사용해서 파싱해서 처리하는 코드가 있네요. 저는 개인적으로 xml.etree.ElementTree를 이용한 코드가 읽기가ㅎ더 편하네요. 코드 지향적이라
0
# ! conda install -c conda-forge xmltodict
# # xmltodict는 XML 파일을 parsing하여 Dictionary와 list 형태로 반환해줌.
import xmltodict
import os
import random
VOC_ROOT_DIR = "../../data/voc/VOCdevkit/VOC2012"
ANNO_DIR = os.path.join(VOC_ROOT_DIR, "Annotations")
JPEG_DIR = os.path.join(VOC_ROOT_DIR, "JPEGImages")
xml_files = os.listdir(ANNO_DIR)
print(xml_files[:5]); print(len(xml_files))
## xmltodict.parse()를 이용하여 xml 파일을 Dictionary와 list형태로 변환
sample_xml = os.path.join(ANNO_DIR, '2007_000032.xml')
print('sample xml file : ', sample_xml)
with open(sample_xml, 'rb') as f: # notice the "rb" mode
parsed_dict = xmltodict.parse(f, xml_attribs = True)
parsed_dict
#### Annotation 내의 Object들의 bounding box 정보를 이용하여 Bounding box 시각화
lmg_filename = parsed_dict['annotation']['filename']
lmg_filename = os.path.join(JPEG_DIR, lmg_filename)
print(lmg_filename)
lmg = cv2.imread(lmg_filename)
lmg_rgb = cv2.cvtColor(lmg, cv2.COLOR_BGR2RGB)
lmg_rgb_copy = img_rgb.copy()
green_rgb = (125,255,51)
for obj in parsed_dict['annotation']['object']:
class_name = obj['name']
bndbox = obj['bndbox']
left = int(bndbox['xmin'])
top = int(bndbox['ymin'])
right = int(bndbox['xmax'])
bottom = int(bndbox['ymax'])
cv2.rectangle(lmg_rgb_copy, (left, top), (right, bottom), color=green_rgb, thickness=2)
plt.figure(figsize=(8,8))
plt.imshow(lmg_rgb_copy)
plt.show()
-------------
이 부분을 말씀하시는 것 같습니다.
7:00 ~
0
안녕하십니까,
jupyter notebook에는 python 코드만 있습니다.
sample_xml 관련 코드가 어떤건지 모르지만 모든 xml 파일은 영상에서 설명된 대로 ~/DLCV/data 밑에 os 파일로 존재하고 있습니다. 그리고 sample_xml 이 어떤 파일인지 제가 잘 모르겠습니다.
질문하신게 제가 답변한 바가 아니라면 sample_xml 관련 코드가 영상의 몇분몇초에 해당 하는 건지 기재해 주시면 제가 다시 찾아보겠습니다.
감사합니다.