【问题标题】:VideoCapture with " int main(int argc, char **argv) "VideoCapture 带有“ int main(int argc, char **argv) ”
【发布时间】:2019-08-15 13:18:25
【问题描述】:

我正在尝试使用 VideoCapture。我的部分代码如下。

当我运行我的代码时,我得到了这个:

错误!提供的参数不足。

如何通过此代码使用我的视频。我想用 VLC 打开一个流。 或者如果有其他方法,我想使用。

我搜索到 argv[1] 将是我的视频文件。但我不知道如何显示我的文件以及如何将我的文件定义为这段代码。

【问题讨论】:

  • 先生,我没有使用 Linux。
  • @NathanOliver 我使用 Windows
  • 当你执行你的程序时,你需要传递 1 个命令行参数。这是您的视频的文件名。
  • 就命令行参数而言,Windows 与 linux 相同。

标签: c++ opencv image-processing video-capture


【解决方案1】:

为了帮助未来的用户,我会做一些改变:

曾经:

LOG_DEBUG("Error! Insufficient parameters provided.");

是:

std::string program(argv[0]);
LOG_DEBUG("Error! Insufficient parameters provided.");
LOG_DEBUG("Please provide a command line argument.");
LOG_DEBUG("Example:  " << program << " VIDEO_FILE_NAME");

解释:

在命令行上,当调用程序时,命令行中的参数被复制到argv 保存的字符串数组中。 argv[0] 是第一个参数,它是程序本身的文件名。换句话说,0 &lt;= i &lt; argcargv[i] 从命令行填充到字符串数组argv 中。如果你重命名了程序可执行文件,下次运行程序时argv[0]会不同。

数组argv 的索引从0argc-1。当 main 被调用时,这个字符串数组和 argc 被设置。由软件决定做什么。在这种情况下,您的应用程序测试 argc 并发现如果没有提供参数(即 argc

顺便说一句,您还可以使用另一种形式的main

int main(int argc, char** argv, char** envp)

argc = 参数数量。 argv = 参数字符串数组 envp = 环境变量数组名=值对

因此,除了简单的命令行参数传递之外,您还可以选择编写main 函数来获取环境变量(不是shell 变量)并根据它决定细微的操作。选项比比皆是。

但就目前而言,如果您的代码报告了错误的原因并且提供的建议似乎可以做到这一点,那么您的代码将会有所帮助。

祝你好运。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2011-07-08
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2014-04-23
    • 2016-09-10
    • 2011-04-23
    相关资源
    最近更新 更多