mirror of
https://github.com/deepinsight/insightface.git
synced 2026-05-15 21:23:52 +00:00
93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import os
|
|
import sys
|
|
|
|
__dir__ = os.path.dirname(os.path.abspath(__file__))
|
|
sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
|
|
|
|
import argparse
|
|
import cv2
|
|
from dataloader.kv_helper import read_img_from_bin
|
|
from dataloader.kv_helper import trans_img_to_bin
|
|
|
|
|
|
def get_file_list(img_file, end=('jpg', 'png', 'jpeg', 'JPEG', 'JPG', 'bmp')):
|
|
imgs_lists = []
|
|
if img_file is None or not os.path.exists(img_file):
|
|
raise Exception("not found any img file in {}".format(img_file))
|
|
|
|
if os.path.isfile(img_file) and img_file.split('.')[-1] in end:
|
|
imgs_lists.append(img_file)
|
|
elif os.path.isdir(img_file):
|
|
for single_file in os.listdir(img_file):
|
|
if single_file.split('.')[-1] in end:
|
|
imgs_lists.append(os.path.join(img_file, single_file))
|
|
if len(imgs_lists) == 0:
|
|
raise Exception("not found any img file in {}".format(img_file))
|
|
return imgs_lists
|
|
|
|
|
|
def parse_args():
|
|
def str2bool(v):
|
|
return v.lower() in ("true", "t", "1")
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--image_path", type=str, default=None)
|
|
parser.add_argument("--bin_path", type=str, default=None)
|
|
parser.add_argument(
|
|
"--mode",
|
|
type=str,
|
|
default="image2bin",
|
|
help="conversion mode, image2bin or bin2image")
|
|
return parser.parse_args()
|
|
|
|
|
|
def main(args):
|
|
assert args.mode in ["image2bin", "bin2image"]
|
|
os.makedirs(args.image_path, exist_ok=True)
|
|
os.makedirs(args.bin_path, exist_ok=True)
|
|
assert os.path.isdir(args.image_path)
|
|
assert os.path.isdir(args.bin_path)
|
|
|
|
if args.mode == "image2bin":
|
|
img_list = get_file_list(args.image_path)
|
|
for idx, img_fp in enumerate(img_list):
|
|
if idx % len(img_list) == 1000:
|
|
print("conversion process: [{}]/[{}]".format(idx,
|
|
len(img_list)))
|
|
img_name = os.path.basename(img_fp)
|
|
output_path = os.path.join(args.bin_path,
|
|
os.path.splitext(img_name)[0] + ".bin")
|
|
trans_img_to_bin(img_fp, output_path)
|
|
elif args.mode == "bin2image":
|
|
bin_list = get_file_list(args.bin_path, end=("bin", ))
|
|
for idx, bin_fp in enumerate(bin_list):
|
|
if idx % len(bin_list) == 1000:
|
|
print("conversion process: [{}]/[{}]".format(idx,
|
|
len(bin_list)))
|
|
bin_name = os.path.basename(bin_fp)
|
|
output_path = os.path.join(args.image_path,
|
|
os.path.splitext(bin_name)[0] + ".jpg")
|
|
img = read_img_from_bin(bin_fp)
|
|
cv2.imwrite(output_path, img)
|
|
|
|
print("ok..")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
args = parse_args()
|
|
main(args)
|