func_get_args获取方法中参数,返回数组

func_get_args是 获取方法中参数的数组 ,返回的是一个数组,与func_num_args搭配使用;
func_num_args一般写在方法中,用于计数;
使用方法如下:
function foo($a='gg',$b='kk'){
       $numargs = func_num_args();
         echo "Number of arguments: $numargs<br />\n";
         if ($numargs >= 2) {
                 echo "Second argument is: " . func_get_arg(1) . "<br />\n";
         }
       $arg_list = func_get_args();
         for ($i = 0; $i < $numargs; $i++) {
                 echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
         }
}

foo(1, 2); //输出内容为:
Number of arguments: 2
Second argument is: 2
Argument 0 is: 1
Argument 1 is: 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import argparse import logging import re from multiprocessing import Process, Queue from pathlib import Path import numpy as np from skimage import exposure, filters from modules.config import logger from modules.volume import volume_loading_func, volume_saving_func def normalize_intensity( np_volume: np.ndarray, relative_path: Path, logger: logging.Logger ): logger.info(f"[processing start] {relative_path}") nstack = len(np_volume) stack: np.ndarray = np_volume[nstack // 2 - 16 : nstack // 2 + 16] hist_y, hist_x = exposure.histogram(stack[stack > 0]) thr = filters.threshold_otsu(stack[stack > 0]) peak_air = np.argmax(hist_y[hist_x < thr]) + hist_x[0] peak_soil = np.argmax(hist_y[hist_x > thr]) + (thr - hist_x[0]) + hist_x[0] np_volume = np_volume.astype(np.int64) for i in range(len(np_volume)): np_volume[i] = ( (np_volume[i] - peak_air).clip(0) / (peak_soil - peak_air) * 256 / 2 ) logger.info(f"[processing end] {relative_path}") return exposure.rescale_intensity( np_volume, in_range=(0, 255), out_range=(0, 255) ).astype(np.uint8) if name == "main": parser = argparse.ArgumentParser(description="Intensity Normalizer") parser.add_argument("-s", "--src", type=str, help="source directory.") parser.add_argument("-d", "--dst", type=str, help="destination directory.") parser.add_argument( "--mm_resolution", type=float, default=0.0, help="spatial resolution [mm].", ) parser.add_argument( "--depth", type=int, default=-1, help="depth of the maximum level to be explored. Defaults to unlimited.", ) args = parser.parse_args() if args.src is None: parser.print_help() exit(0) root_src_dir: Path = Path(args.src).resolve() if not root_src_dir.is_dir(): logger.error("Indicate valid virectory path.") exit() root_dst_dir = Path( args.dst or str(root_src_dir) + "_intensity_normalized" ) mm_resolution = float(args.mm_resolution) depth = int(args.depth) volume_loading_queue = Queue() volume_loading_process = Process( target=volume_loading_func, args=(root_src_dir, root_dst_dir, depth, volume_loading_queue, logger), ) volume_loading_process.start() volume_saving_queue = Queue() volume_saving_process = Process( target=volume_saving_func, args=(volume_saving_queue, logger), ) volume_saving_process.start() while True: ( volume_path, np_volume, volume_info, ) = volume_loading_queue.get() if volume_path is None: break relative_path = volume_path.relative_to(root_src_dir) np_volume = normalize_intensity(np_volume, relative_path, logger) if mm_resolution != 0: volume_info.update({"mm_resolution": mm_resolution}) while volume_saving_queue.qsize() == 1: pass dst_path = Path( root_dst_dir, re.sub(r"cb\d{3}$", "", str(relative_path)) ) volume_saving_queue.put( (dst_path, root_dst_dir, np_volume, volume_info) ) volume_saving_queue.put((None, None, None, None))完整详细的解释每一行的代码意思和作用
最新发布
04-19
这段代码是一个 Python 脚本,用于对医学图像进行强度归一化处理。以下是每行代码的详细解释: 第 1 行:导入必要的模块。 第 3 行:定义一个函数 normalize_intensity,用于对给定的医学图像进行强度归一化处理。该函数接受三个参数:np_volume(一个 NumPy 数组,表示医学图像数据)、relative_path(一个 Path 对象,表示该数据在文件系统的路径)、logger(用于记录日志的 Logger 对象)。 第 4 行:使用日志记录器输出一条日志,表示开始处理医学图像。 第 5 行:获取图像堆栈的数量 nstack。 第 6 行:将图像堆栈的 16 张图像提取出来,作为参考图像,用于计算阈值。 第 7 行:使用 skimage 库的 exposure.histogram 函数计算图像堆栈所有非空像素的直方图 hist_y 和 hist_x。 第 8 行:使用 skimage 库的 filters.threshold_otsu 函数计算一个全局阈值 thr。 第 9 行:计算阈值下面的像素的直方图峰值 peak_air。 第 10 行:计算阈值上面的像素的直方图峰值 peak_soil。 第 11 行:计算从阈值到图像范围最小值的距离 hist_x[0]。 第 12 行:将医学图像数据转换为 int64 类型。 第 13~17 行:循环遍历所有图像,对每个像素进行强度归一化处理,得到新的像素值。 第 18 行:使用 skimage 库的 exposure.rescale_intensity 函数对强度归一化后的图像进行重新缩放,得到范围在 [0, 255] 内的 uint8 类型像素值。 第 19 行:使用日志记录器输出一条日志,表示完成医学图像处理。 第 20 行:返回经过强度归一化和重新缩放后的医学图像数据。 第 22~36 行:定义脚本的主函数。使用 argparse 模块解析命令行参数获取源目录、目标目录、空间分辨率和深度等参数值。 第 37 行:如果源目录为空,则打印帮助信息并退出程序。 第 38 行:使用 pathlib 库的 Path 类,获取源目录的绝对路径。 第 39 行:如果源目录不存在,则使用日志记录器输出一条错误信息,并退出程序。 第 40 行:使用 pathlib 库的 Path 类,构造目标目录的路径。若目标目录为空,则默认使用源目录路径加上后缀 "_intensity_normalized"。 第 41 行:获取空间分辨率和深度参数值。 第 42 行:创建两个进程,用于对医学图像进行加载和保存。 第 44~48 行:循环遍历医学图像,调用 normalize_intensity 函数对图像进行强度归一化处理。当加载进程队列为空时,跳出循环。 第 49 行:获取该图像在源目录的相对路径。 第 50 行:如果需要修改空间分辨率,则将该信息添加到图像的元数据。 第 51~53 行:每当保存进程队列的大小为 1 时,等待一段时间,以防止队列溢出。 第 54~56 行:构造目标目录的路径,删除文件名的 cb 前缀,并将归一化后的医学图像保存到该路径。 第 57 行:使用保存进程队列结束保存进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值