视频捕获与" int main(int argc, char **argv) "
VideoCapture with " int main(int argc, char **argv) "
我正在尝试使用VideoCapture。 我的部分代码如下。
当我运行我的代码时,我得到这个:
错误!提供的参数不足。
我如何使用我的视频和这个代码。我想用 VLC 打开一个流。 或者如果有其他方法,我想使用。
我搜索了argv[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 <= i < argc
argv[i]
填充在从命令行argv
的字符串数组中。 如果重命名程序可执行文件,则下次运行该程序时argv[0]
会有所不同。
数组argv
的索引从0
到argc-1
。 调用main
时,将设置此字符串数组和 argc。 由软件决定做什么。 在这种情况下,您的应用程序测试argc
并发现如果未提供参数(即 argc <2(,则用户提供的一个用户参数不存在,报告错误并返回。
顺便说一下,您可以使用另一种形式的main
:
int main(int argc, char** argv, char** envp)
argc
= 参数数。argv
= 参数字符串数组envp
= 环境变量名称数组 = 值对
因此,除了简单的命令行参数传递之外,还可以选择编写main
函数来获取环境变量(而不是 shell 变量(并据此决定细微的操作。 选择比比皆是。
但就目前而言,如果您的代码报告了错误的原因并且提供的建议似乎可以做到这一点,它将很有帮助。
祝你好运。
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 声明具有两种类型的变量:"int char"
- 定义.cpp中常数int/char*
- Qt5 对'QApplication::QApplication(int&, char**, int)'的未定义引用
- 将int/char插入数据库
- 从 std::vector 转换为<int> char[] C++
- 为什么INT(char)的比较不起作用
- 使用int+char组合uint8_t
- 为什么这个返回值?C++int/char混淆
- 向量到 int<char> 与向量<wchar_t>到 int
- Evaluate an int, char and int
- 接收错误"no matching function for call to 'getline(std::ifstream&, int&, char)'"
- reinterpret_cast<int*>(char*) vs. static_cast<int*>(static_cast<void*>(char*)) --
- 将类型int(C::*)(int, char)转换为类型int(int, char)
- 如何添加多位数的int和char,其中输出为int+char
- 是int, char也是抽象数据类型