我正在尝试一些OpenCV,并且正在使用Canny边缘检测器Example的教程。
在本教程中,有一个这样声明的函数:
void CannyThreshold(int, void*)
然后从main内部这样调用;
CannyThreshold(0, 0);
我不理解声明的(int,void *)部分的目的,因为CannyThreshold函数中没有使用任何这些参数。
为什么不只是这样声明呢?
void CannyThreshold();
最佳答案
注意示例中的这一行:
createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
在这里,
CannyThreshold
作为回调参数传递给createTrackbar
。 createTrackbar
的签名要求回调函数接受这两个参数,即使CannyThreshold
没有用到这两个参数,回调也必须接受。