我想cv::VideoCapture有条件地调用构造函数.如果argc == 2,则用户指定了视频文件,我想加载它.否则使用默认摄像头.
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char* argv[])
{
VideoCapture cap(argc == 2 ? argv[1] : 0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译并运行它
$ g++ -g -Wall -o main main.cpp `pkg-config opencv --cflags --libs`
$ ./main
Run Code Online (Sandbox Code Playgroud)
但遗憾的是它似乎没有用,我得到了
OpenCV: Couldn't read movie file ""
Run Code Online (Sandbox Code Playgroud)
三元运算符在一种情况下返回一个字符串,在另一种情况下返回一个整数.我认为这是行不通的,因为我不知道C++构造函数的一些特性.
做我想要的最干净的方法是什么?我可以不使用new这样做,所以我不必在程序结束时自己释放内存吗?
你过度复杂了.用途open:
VideoCapture cap;
if(argc == 2) {
cap.open(argv[1]); // calls: open(const String& filename)
} else {
cap.open(0); // calls: open(int index)
}
Run Code Online (Sandbox Code Playgroud)
在三元运算符中,两个操作数必须是相同的类型.详情请见此处.但你有型int和char*,因此,即使该代码可以编译的,它可能会导致运行错误.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |