我正在使用Opencv/c ++.我使用该函数获取视频中的帧数
int noOfFrames = cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_COUNT );
我还宣布了一个数组int Entropy[noOfFrames];.但由于变量noOfFrames是非常量的,因此会出错.
我甚至用过const_cast这个,但它仍然给出了错误.我希望数组的长度等于视频的帧数.
我该怎么做 ???
您不能声明具有动态大小的静态数组.你需要一个动态数组:
int* Entropy = new Entropy[noOfFrames];
// use here, same as array
delete[] Entropy;
Run Code Online (Sandbox Code Playgroud)
但使用矢量更容易:
std::vector<int> Entropy(noOfFrames);
// use here, same as array and more
// no need to clean up, std::vector<int> cleans itself up
Run Code Online (Sandbox Code Playgroud)
在C++中,你不能这样做,因为c风格数组的大小应该是编译时常量1.
无论如何,你有一个更好的选择:使用 std::vector
std::vector<int> Entropy(noOfFrames);
Run Code Online (Sandbox Code Playgroud)
即使你有编译时常量,我也不建议你使用int arr[size]哪个是c风格的数组.相反,我建议你使用std::array<int,size> arr;哪个是更好的解决方案.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |