我正在尝试一些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作为回调参数传递给createTrackbarcreateTrackbar的签名要求回调函数接受这两个参数,即使CannyThreshold没有用到这两个参数,回调也必须接受。

09-10 04:31