import hashlib
import io
import json
import os
import PIL.Image
import tensorflow as tf
from dataset import tfrecord_util
# 1개의 image 파일 PATH와 1개의 annotation XML 정보를 가지는 data dic를 이용하여 tf.train.Example를 생성.
def dict_to_tf_example(data, image_path, label_map_dict, unique_id, ignore_difficult_instances=False, ann_json_dict=None, debug=True):
'''
data는 1개의 xml 파일을 dictionary로 변환 anno_dict,
image는 1개의 xml에 매핑되는 image 파일의 절대 경로
unique_id는 고유한 image와 object id를 만들기 위한 Unique_Id객체
'''
#JPEG image를 binary 그대로 읽음.
with tf.io.gfile.GFile(image_path, 'rb') as fid:
encoded_jpg = fid.read()
# image가 JPEG 타입인지 확인.
encoded_jpg_io = io.BytesIO(encoded_jpg)
image = PIL.Image.open(encoded_jpg_io)
if image.format != 'JPEG':
raise ValueError('Image format not JPEG')
# image의 고유 key값 생성.
key = hashlib.sha256(encoded_jpg).hexdigest()
#고유한 image id를 생성.
image_id = unique_id.get_image_id()
# image의 width와 height 가져옴.
width = data['width']
height = data['height']
jpg 파일을 읽어서 바이너리로 출력하는데 png파일을 넣으면 이상한 값이 나오는것같아 질문합니다!
감사합니다!