怎么把批处理文件导入python

怎么把批处理文件导入python,第1张

你好,我找到的资料

影像波段融合的控制台小程序Fusion.exe,需要打开cmd,然后需要在cmd中输入

融合程序路径 影像宽度w 影像高度h 波段数n 影像1路径 影像2路径……影像n路径 融合后影像路径

1

如果只需要波段融合成一副影像,那直接在控制台调用程序并输入参数即可。但这次需要将236幅每6个波段的影像进行波段融合,手动一次次来的话,我选择狗带。

要是把在cmd输入的参数换成变量就好了,我们可以通过for循环和变量可以达到让cmd重复执行相似的命令。

2. 使用python进行批处理

我们这里主要运用了os.system()函数。os模块中的system()函数可以方便地运行其他程序或者脚本。相当于在Windows的cmd窗口中输入的命令。

主要需要4个步骤:

1. 导入os模块

import os

1

2. 输入要执行的命令

command = 'ipconfig' #要执行的命令(这里以命令ipconfig为例),相当于直接在windows的cmd窗口中输入的命令。

1

3. 调用os.system()函数

os.system(command) #调用os.system()函数,参数为上面定义的command.

1

4. for循环1-3 步骤

将代码保存为 自定义文件名.py ,在cmd执行下面命令。

python 自定义文件名.py #注意:安装python时,需要设置环境变量

1

————————————————

版权声明:本文为CSDN博主「Kenighto」

下面Python代码来演示如何编程处理心血管冠脉造影DICOM图像信息。

1. 导入主要框架:SimpleITK、pydicom、PIL、cv2和numpy

import SimpleITK as sitk

from PIL import Image

import pydicom

import numpy as np

import cv2

2. 应用SimpleITK框架来读取DICOM文件的矩阵信息。如果DICOM图像是三维螺旋CT图像,则帧参数则代表CT扫描层数;而如果是造影动态电影图像,则帧参数就是15帧/秒的电影图像帧数。

def loadFile(filename):

ds = sitk.ReadImage(filename)

img_array = sitk.GetArrayFromImage(ds)

frame_num, width, height = img_array.shape

return img_array, frame_num, width, height

3. 应用pydicom来提取患者信息。

def loadFileInformation(filename):

information = {}

ds = pydicom.read_file(filename)

information['PatientID'] = ds.PatientID

information['PatientName'] = ds.PatientName

information['PatientBirthDate'] = ds.PatientBirthDate

information['PatientSex'] = ds.PatientSex

information['StudyID'] = ds.StudyID

information['StudyDate'] = ds.StudyDate

information['StudyTime'] = ds.StudyTime

information['InstitutionName'] = ds.InstitutionName

information['Manufacturer'] = ds.Manufacturer

information['NumberOfFrames'] = ds.NumberOfFrames

return information

4. 应用PIL来检查图像是否被提取。

def showImage(img_array, frame_num = 0):

img_bitmap = Image.fromarray(img_array[frame_num])

return img_bitmap

5. 采用CLAHE (Contrast Limited Adaptive Histogram Equalization)技术来优化图像。

def limitedEqualize(img_array, limit = 4.0):

img_array_list = []

for img in img_array:

clahe = cv2.createCLAHE(clipLimit = limit, tileGridSize = (8,8))

img_array_list.append(clahe.apply(img))

img_array_limited_equalized = np.array(img_array_list)

return img_array_limited_equalized

接到的需求是对文件夹下包括子目录所有影像进行投影变换,在网上找了找,大家的代码好像和需求不太一致,自己写了一个小工具。

思路是遍历文件夹所有.tif文件。

1.用os.walk()函数来获取路径和文件名

2.用 if 语句限制读取后缀为.tif的文件

3.将文件路径和文件名组合起来

4.调用arcpy.ProjectRaster_management语句投影变换并输出

由于刚刚接触python,难点主要在于os.walk()目录的读取这个函数的了解上。

以下是代码

#coding = utf-8

import os

import arcpy

from arcpy import *

#定义一个函数,第一个参数是一个集合,用来接收所有.tif的路径。第二个函数是指定的文件夹。

def huoqu(jieshou,lujing):

    for dirpath,dirnames,filenames in os.walk(lujing):

        for filename in filenames:

            if  os.path.splitext(filename)[1] == '.tif':

                file1 = dirpath+'\\'+filename

                jieshou.append(file1)

#这里变量的设置,GetParameterAsText函数来获取对应在python工具箱中的位置

env.workspace = GetParameterAsText(0)

work = env.workspace

ref = GetParameterAsText(1)

tifz = []

#调用自定义的函数

huoqu(tifz,work)

#对所有的影像进行循环投影变换,并且将输出路径设置为指定的文件夹+原本的名字

for file in tifz:

    out = GetParameterAsText(2)+"/"+ os.path.basename(file)

    ProjectRaster_management(file,out,ref)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11595002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存