【问题标题】:error: the following arguments are required: -i/--image, -w/--width错误:需要以下参数:-i/--image, -w/--width
【发布时间】:2020-09-30 05:40:24
【问题描述】:

我遇到了问题:pythonOpencv 我只是想从Measuring distance between objects in an image with OpenCV尝试这个脚本

/Users/Acer/OneDrive/Desktop/contohajaya/distance_between.py
usage: distance_between.py [-h] -i IMAGE -w WIDTH
distance_between.py: error: the following arguments are required: -i/--image, -w/--width

我有import argparse

如果你有解决办法,请写下你:)

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!您可以编辑帖子并直接输入代码,而不是链接到它?
  • pyimagesearch.com/2016/04/04/… 在博客文章本身的 cmets 中提出并解决了这个确切的问题
  • 错误意味着你必须使用参数distance_between.py -i path_to_image -w some_width_value运行它(在控制台中)
  • 你怎么称呼这个脚本?来自贝壳?来自像sypder这样的IDE?你知道什么是命令行参数,以及如何提供它们吗?

标签: python argparse


【解决方案1】:

这不是错误,而是预期的结果。

您必须在控制台/终端/cmd.exe/bash/etc 中运行代码。并使用参数

 distance_between.py -i path_to_image -w some_width_value

你不能在没有参数的情况下运行它,因为它没有用。

这意味着你不能双击脚本来运行它,因为它会在没有参数的情况下运行。


编辑:

当您没有在控制台中设置参数时,您可以使用add_argument( default=... ) 来使用默认值 - 即。默认width800

ap.add_argument("-w", "--width", type=float, required=True, default=800, help="...")

它对width 很有用,它可能经常需要相同的图像,但总是使用相同的图像运行代码会很无聊。


当然,您可以删除所有ArgumentParser 并在代码中使用常量值 - 即

args = {"width": 800, "image": "path/to/image.jpg"}

但是总是为同一个图像运行会更无聊。

要使用不同的图像,您必须在代码中更改此值。

ArgumentParser 中使用default=... 会好很多,因为您可以不带参数运行并且它将使用默认值,但您仍然可以在控制台中使用参数运行以使用不同的值而无需更改代码。

【讨论】:

  • 非常感谢您的回复.....我还是想问一下,可以不带参数运行吗?如何?其实我对论点知之甚少
  • 您可以在add_argument(...) 中使用default=... 设置默认值,然后您可以在控制台中不带参数运行。但它将始终使用相同的image 和相同的width。它对width 很有用,但总是使用相同的图像看起来“无聊”——用不同的图像运行它会更有用(在控制台中使用参数)。
猜你喜欢
  • 2021-07-12
  • 2021-12-18
  • 2019-08-27
  • 1970-01-01
  • 2019-05-26
  • 2018-12-12
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
相关资源
最近更新 更多