cv::VideoCapture
コンストラクタを条件付きで呼び出す必要があります。 argc == 2
の場合、ユーザーはビデオファイルを指定しており、そのファイルをロードします。それ以外の場合は、デフォルトのカメラを使用します。条件付きでcv :: VideoCaptureコンストラクタを呼び出す
$ g++ -g -Wall -o main main.cpp `pkg-config opencv --cflags --libs`
$ ./main
を実行します。しかし、悲しいことに、動作するようには思えないと私は三項演算子は一つのケースでは、文字列と整数を返します
OpenCV: Couldn't read movie file ""
を取得
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char* argv[])
{
VideoCapture cap(argc == 2 ? argv[1] : 0);
return 0;
}
別の私は、これは私が気づいていないC++コンストラクタのいくつかの特質のためにはうまくいかないと思います。
私がしたいことを行う最もクリーンな方法は何ですか?私はnew
を使わずにそれを行うことができるので、プログラムの終わりに自分自身でメモリを解放する必要はありませんか?
あなたは二番目は、実際にあなたが期待する引数であることを確認するために、それぞれのarg throghルーピングしようとしたことがありますか?実行可能ファイルを実行するときにargsを解析しないと、2つのargsの合計が得られます。たぶん、args == 3とargs [2] – stav
@stavを試してみました。プログラムを引数に渡さないと 'argc'が1になり、ファイル名を渡すと' 2'がチェックされます。私も 'argv'をループして、大丈夫です。 – faviouz