我以前从未使用过c++,我在Python中使用OpenCV背景减法MOG(混合高斯)函数,我需要了解程序是如何工作的,OpenCV程序第123行有命令bgmodel.create( 1, frameSize.height*frameSize.width*nmixtures*(2 + 2*nchannels), CV_32F );
..我发现.create
函数是从这里分配新数据,我假设里面的参数是(int ndims, const int* sizes, int type)
,我的问题是*是什么意思,它是乘法还是指针?
星号(*)有三个用例:
- 乘法运算符:2 * 3
- 指针类型声明:int* p;
- 解除指针的引用(使其成为对指针的值的引用)*p = 6;
的例子:
int i;
int* p = &i; // Sorry, introducing another confusion, taking the address of i
*p = 2 * 3;
// Now *p and i have the value 6
问题中只涉及乘法
看看你的例子:
bgmodel.create( 1, frameSize.height*frameSize.width*nmixtures*(2 + 2*nchannels), CV_32F );
我们想知道*
是指针解引用还是乘法。指针解引用的形式是
* pointer_type;
在这里不起作用,因为每个*
之前都有另一个变量。如果我们看一下乘法的语法,我们有:
some_type * some_type;
现在这与我们在*
现在假设你想对一个指针解引用,并将其与某个数相乘。为此,我们将解引用括在圆括号
中。some_type * (*pointer_type);