如何在OpenCV目标检测代码中为命令行解析器硬编码参数?
硬编码OpenCV命令行解析器参数的实现尝试
我最近想省掉每次运行目标检测程序时手动输入命令行参数的步骤,于是尝试给OpenCV的命令行解析器做参数硬编码。在object_detection文件中,我在第40-48行添加了相关代码,直接指定输入视频文件路径,不用再通过命令行输入文件名:
void drawPred(int classId, float conf, int left, int top, int right, int bottom, Mat& frame); void callback(int pos, void* userdata); int main(int argc, char** argv) { // 新增代码:直接指定输入视频路径 argv[1] = "-input /home/Videos/test.mp4"; CommandLineParser parser(argc, argv, ke...
不过这里要提个小注意:直接修改argv指针指向的内容可能会有内存问题,比如原argv[1]指向的内存空间可能不够容纳新的字符串。更稳妥的做法是重新构造参数数组,比如:
// 替代直接修改argv[1]的写法 const char* new_argv[] = {argv[0], "-input", "/home/Videos/test.mp4"}; int new_argc = 3; CommandLineParser parser(new_argc, (char**)new_argv, ke...
这样能避免内存越界的风险,也更符合C++的内存安全规范。
内容的提问来源于stack exchange,提问作者Ahmad M.
相关产品推荐
相关产品推荐

