Files
Seg_Data_Server/DataSet_Own/1. 图片预处理(内含使用手册)/Seg_data_run.sh
2026-05-20 15:05:35 +08:00

246 lines
11 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
usage() {
echo "Usage: $0 -i <ori_image_directory> -l <ori_label_directory> [-h]"
echo "对image图片和label图片进行统一处理"
echo "-i:原始图片的路径,-l:原始标签的路径,-h:帮助"
}
ori_image_directorys=""
ori_label_directorys=""
stack_result_directorys=""
stitch_result_directorys=""
while getopts "hl:i:" opt; do
case $opt in
h)
usage
exit 0
;;
i)
ori_image_directorys=$OPTARG
;;
l)
ori_label_directorys=$OPTARG
;;
*)
echo '!!! Error, Illegal input !!!'
usage
exit 1
;;
esac
done
# 判断label、image是否都为空
echo $ori_label_directorys $ori_image_directorys
if [ -z "$ori_label_directorys" ] && [ -z "$ori_image_directorys" ]; then
echo -e "\033[31mori_label_directory、ori_image_directory不能都为空\033[0m"
usage
exit 1
fi
# 进行绝对路径转化
ori_image_directory=$(readlink -f "$ori_image_directorys")
ori_label_directory=$(readlink -f "$ori_label_directorys")
if [ ! -d "$ori_label_directory" ] && [ ! -d "$ori_image_directory" ]; then
echo "image、label都不存在程序退出"
echo -e "\033[31mori_image_directory\033[0m: $ori_image_directorys"
echo "$ori_image_directory"
echo -e "\033[31mori_label_directory\033[0m: $ori_label_directorys"
echo "$ori_label_directory"
exit 1
fi
# 激活conda环境
# source /home/"$USER"/miniconda/bin/activate Pat_infos
# 记录脚本所在路径
script_path=$(dirname "$0")
echo -e "\033[32m******* 开始Run运行Seg_data_run.sh批量图片处理程序 *******\033[0m"
# 进行操作选择
while true; do
PS3='Please enter your choice: '
options=("移动图片与重命名" "图片统一大小与类型" "image、label配对检测" "对label进行重建" "TOOL_image、label堆叠" "TOOL_image、label拼接" "Quit")
echo -e "\033[35m____ Seg_data_run选择 ____\033[0m"
echo -e "\033[35mImage所在地址\033[0m$ori_image_directory"
echo -e "\033[35mLabel所在地址\033[0m$ori_label_directory"
select opt in "${options[@]}"
do
case $opt in
### 选项1 ###
"移动图片与重命名")
echo -e "\033[31mRun运行:\033[0mbash $script_path/1_rename_pics.sh -i $ori_image_directory -l $ori_label_directory"
bash $script_path/1_rename_pics.sh -i "$ori_image_directory" -l "$ori_label_directory"
echo ""
break
;;
### 选项2 ###
"图片统一大小与类型")
echo -n "请输入宽度默认1920:"
read -r width
echo -n "请输入高度默认1080:"
read -r height
if [ -z "$width" ]; then
width=1920
fi
if [ -z "$height" ]; then
height=1080
fi
# 如果输入图片路径为空
if [ -z $ori_image_directory ];then
echo -e "\033[31mRun运行:\033[0mbash $script_path/2_reformate_pics.sh -l $ori_label_directory -w $width -h $height "
bash $script_path/2_reformate_pics.sh -l $ori_label_directory -w $width -h $height
elif [ -z $ori_label_directory ];then
echo -e "\033[31mRun运行:\033[0mbash $script_path/2_reformate_pics.sh -l $ori_label_directory -w $width -h $height "
bash $script_path/2_reformate_pics.sh -i $ori_image_directory -w $width -h $height
else
echo -e "\033[31mRun运行:\033[0mbash $script_path/2_reformate_pics.sh -i $ori_image_directory -l $ori_label_directory -w $width -h $height"
bash $script_path/2_reformate_pics.sh -i $ori_image_directory -l $ori_label_directory -w $width -h $height
fi
echo ""
break
;;
### 选项3 ###
"image、label配对检测")
while [ ! -d "$ori_image_directory" ]; do
echo -e "\033[31mImage地址为:$ori_image_directorys,其不存在\033[0m"
echo -n "请输入image所在地址:"
read -r ori_image_directorys
ori_image_directory=$(readlink -f "$ori_image_directorys")
done
while [ ! -d "$ori_label_directory" ]; do
echo -e "\033[31mLabel地址为:$ori_label_directorys,其不存在\033[0m"
echo -n "请输入label所在地址:"
read -r ori_label_directorys
ori_label_directory=$(readlink -f "$ori_label_directorys")
done
echo -n "请输入图片前缀文本(默认为\"\":"
read -r prefix # 禁止转译
echo -n "请输入图片后缀文本(非.png类后缀名默认为\"\":"
read -r suffix
if [ -z $preffix ];then
preffix=""
fi
if [ -z $suffix ];then
suffix=""
fi
echo -e "\033[31mRun运行:\033[0mbash $script_path/3_pair_ori_label.sh -i $ori_image_directory -l $ori_label_directory -p $prefix -s $suffix"
bash $script_path/3_pair_ori_label.sh -i $ori_image_directory -l $ori_label_directory -p "$prefix" -s "$suffix"
echo ""
break
;;
### 选项4 ###
"对label进行重建")
# 判断Label目录是否存在
while [ -z "$ori_label_directory" ]; do
echo -e "\033[31mLabel地址为:$ori_label_directorys,其存在异常\033[0m"
echo -n "请输入堆叠结果存储目录地址:"
read -r ori_label_directorys
ori_label_directory=$(readlink -f "$ori_label_directorys")
done
echo -e "\033[31mRun运行:\033[0mbash $script_path/4_rebuild_labels.sh -l $ori_label_directory"
bash $script_path/4_rebuild_labels.sh -l $ori_label_directory
echo ""
break
;;
### 选项5 ###
"TOOL_image、label堆叠")
while [ ! -d "$ori_image_directory" ]; do
echo -e "\033[31mImage地址为:$ori_image_directorys,其不存在\033[0m"
echo -n "请输入image所在地址:"
read -r ori_image_directorys
ori_image_directory=$(readlink -f "$ori_image_directorys")
done
while [ ! -d "$ori_label_directory" ]; do
echo -e "\033[31mLabel地址为:$ori_label_directorys,其不存在\033[0m"
echo -n "请输入label所在地址:"
read -r ori_label_directorys
ori_label_directory=$(readlink -f "$ori_label_directorys")
done
echo -n "请输入堆叠图片透明程度0~1,0为最透明默认为0.3"
read -r alpha
echo -n "请输入图片前缀文本(默认为\"\":"
read -r prefix
echo -n "请输入图片后缀文本(非.png类后缀名默认为\"\":"
read -r suffix
if [ -z "$alpha" ]; then
alpha="0.3"
fi
stack_result_directory=""$ori_label_directory"_堆叠_"$alpha"_透明度"
echo -n "请输入堆叠结果存储目录(默认为$stack_result_directory)"
read -r stack_result_directorys
# 判断堆叠目录非为空则进行转换
if [ ! -z "$stack_result_directorys" ]; then
stack_result_directory=$(readlink -f "$stack_result_directorys")
fi
# 判断Label目录是否存在
while [ -z "$ori_label_directory" ]; do
echo -e "\033[31mLabel地址为:$ori_label_directorys,其存在异常\033[0m"
echo -n "请输入堆叠结果存储目录地址:"
read -r ori_label_directorys
ori_label_directory=$(readlink -f "$ori_label_directorys")
done
echo -e "\033[31mRun运行:\033[0mbash $script_path/5_TOOL_stack_pics.sh -i $ori_image_directory -l $ori_label_directory -p $prefix -s $suffix -a $alpha -r $stack_result_directory"
bash $script_path/5_TOOL_stack_pics.sh -i "$ori_image_directory" -l "$ori_label_directory" -p "$prefix" -s "$suffix" -a "$alpha" -r "$stack_result_directory"
echo ""
break
;;
### 选项6 图片拼接 ###
"TOOL_image、label拼接")
while [ ! -d "$ori_image_directory" ]; do
echo -e "\033[31mImage地址为:$ori_image_directorys,其不存在\033[0m"
echo -n "请输入image所在地址:"
read -r ori_image_directorys
ori_image_directory=$(readlink -f "$ori_image_directorys")
done
echo "1.label目前为\"$ori_label_directory\""
echo -n "是否调整label所在文件夹(默认为不调整,有输入视为调整):"
read -r temp
while [ ! -z "$temp" ]; do
read -r ori_label_directorys
ori_label_directorys=$(readlink -f "$ori_label_directorys")
done
while [ ! -d "$ori_label_directory" ]; do
echo -e "\033[31mLabel地址为:$ori_label_directorys,其不存在\033[0m"
echo -n "请输入label所在地址:"
read -r ori_label_directorys
ori_label_directory=$(readlink -f "$ori_label_directorys")
done
stitch_result_directory=""$ori_label_directory"_拼接"
echo -n "2.请输入堆叠结果存储目录(默认为$stitch_result_directory)"
read -r stitch_result_directorys
# 判断堆叠目录非为空则进行转换
if [ ! -z "$stitch_result_directorys" ]; then
stitch_result_directory=$(readlink -f "$stitch_result_directorys")
fi
echo -n "3.请输入图片前缀文本(默认为\"\":"
read -r prefix
echo -n "4.请输入图片后缀文本(非.png类后缀名默认为\"\":"
read -r suffix
echo -e "\033[31mRun运行:\033[0mbash $script_path/6_TOOL_stitch_pics.sh -i $ori_image_directory -l $ori_label_directory -p "$prefix" -s "$suffix" -r "$stitch_result_directory""
bash $script_path/6_TOOL_stitch_pics.sh -i "$ori_image_directory" -l "$ori_label_directory" -p "$prefix" -s "$suffix" -r "$stitch_result_directory"
exit 0
;;
### 选项7 退出 ###
"Quit")
echo -e "\033[35mSeg_data_run.sh Exiting...\033[0m"
exit 0
;;
*)
echo "Invalid option: $REPLY"
echo -e ""
break
;;
esac
done
done