Python 试图提供一些简单的命令行界面

Python 试图提供一些简单的命令行界面,python,argparse,Python,Argparse,我试图通过ArgumentParser为脚本提供命令行用户界面 从库argparse。它不应该是任何高级参数解析器,只是通过/使用帮助标志指定输入和输出图像文件名的几个解析器。我读了很多关于如何做这件事的书,但觉得很难。下面的代码显示了我到目前为止所做的工作。有什么建议可以让它变得更好,这样它就可以工作了 # Import the argparse library import argparse # Construct the argument parser and parse the arg

我试图通过ArgumentParser为脚本提供命令行用户界面 从库argparse。它不应该是任何高级参数解析器,只是通过/使用帮助标志指定输入和输出图像文件名的几个解析器。我读了很多关于如何做这件事的书,但觉得很难。下面的代码显示了我到目前为止所做的工作。有什么建议可以让它变得更好,这样它就可以工作了

# Import the argparse library
import argparse

# Construct the argument parser and parse the argument
parser = argparse.ArgumentParser("Specify the input- and output file")
parser.add_argument("box_kernel", help = "The type of kernel")
parser.add_argument("input_image", help = "The input file(image)")
parser.add_argument("output_image", help = "Creating the output image")

args = parser.parse_args()


# Oppgave 4.1

import timeit
import numpy 
from PIL import Image, ImageDraw # Importerer biblioteket
start = timeit.default_timer()


# Load image:
input_image = Image.open("beatles.jpg") 
input_pixels = input_image.load()

# Box Blur kernel
box_kernel = [[1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9]]

# Select kernel here:
kernel = box_kernel(args["box_kernel"])

# Middle of the kernel
offset = len(kernel) // 2

# Creating the output image
output_image = Image.new("RGB", input_image.size)
draw = ImageDraw.Draw(output_image)


# Beregne konvolusjon mellom intensity (original bilde) og  kernel 
for x in range(offset, input_image.width - offset):
    for y in range(offset, input_image.height - offset):
        acc = [0, 0, 0]
        for a in range(len(kernel)):
            for b in range(len(kernel)):
                xn = x + a - offset
                yn = y + b - offset
                pixel = input_pixels[xn, yn]
                acc[0] += pixel[0] * kernel[a][b]
                acc[1] += pixel[1] * kernel[a][b]
                acc[2] += pixel[2] * kernel[a][b]

draw.point((x, y), (int(acc[0]), int(acc[1]), int(acc[2])))

output_image.save("Beatles box blur.png")

stop = timeit.default_timer()

print('Time: ', stop - start)  

你说的“这么说可能行得通”是什么意思?你认为你发布的代码有什么错误,你想让它做什么?你也可以考虑使用<代码> opencv < /Cord>,因为它有比你嵌套更快的方式来做2D卷积的代码。loops@SamMason代码在没有命令行的情况下运行,但我正在尝试附加一些命令行。任务是:使用argparse库中的ArgumentParser为脚本提供命令行用户界面。设计应该通过调用--help标志来提供说明,并且应该可以指定输入和输出图像文件名。使用嵌套循环是因为它是任务的一部分:)我没有做你的家庭作业!尽管我会帮助你们学习,我上面的所有问题仍然有效。它有什么问题,您希望它做什么?我理解:)因此,基本上我希望/尝试使用两个命令行参数,提供以下信息:1:CLI查看代码的输入文件名,2:CLI查看代码的输出文件名。然后我建议编辑问题以包括一些示例,例如,一些案例应该成功,一些案例应该失败,在这些案例中应该发生什么