0

Opencv/c++ を使用しています。関数を使用してビデオのフレーム数を取得します int noOfFrames = cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_COUNT );

array も宣言しましたint Entropy[noOfFrames];。ただし、変数noOfFramesは非定数であるため、エラーが発生します。

私もこれに使用const_castしましたが、それでもエラーが発生します。配列の長さをビデオのフレーム数と等しくしたい。

どうすればできますか???

4

2 に答える 2

6

動的サイズで静的配列を宣言することはできません。動的配列が必要です:

int* Entropy = new Entropy[noOfFrames];

// use here, same as array

delete[] Entropy;

ただし、ベクトルを使用する方が簡単です。

std::vector<int> Entropy(noOfFrames);

// use here, same as array and more

// no need to clean up, std::vector<int> cleans itself up
于 2013-01-01T20:03:53.423 に答える
5

C++ では、C スタイルの配列のサイズはコンパイル時の定数1でなければならないため、これを行うことはできません。

とにかく、優れた代替手段があります:使用std::vector

std::vector<int> Entropy(noOfFrames);

コンパイル時の定数がある場合でも、int arr[size]C スタイルの配列を使用することはお勧めしません。std::array<int,size> arr;代わりに、これもはるかに優れたソリューションを使用することをお勧めします。

于 2013-01-01T20:03:40.523 に答える