是*符号在framsize .height* framsize.Width * nmixes *(2 + 2*nchan



我以前从未使用过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);

相关内容

  • 没有找到相关文章

最新更新