OpenCV 垫* 图像 = (垫子*) 图像

OpenCV mat* image = (Mat*) image

本文关键字:图像 垫子 OpenCV      更新时间:2023-10-16

嗨,我是OpenCV和C++的新手。我希望使用 setMouseCallback 函数,并这样做:

setMouseCallback("Window Name", functionName, &frame);
void functionName("int event, int x, int y, int flag, void* param"){
Mat *image = (Mat*)param;
//other stuff here
}

我只想问...为什么我必须放置 (Mat*( 参数,而不仅仅是放置 Mat *参数。

提前感谢!

在这个例子中,你有一个显式的类型转换(参见例如 http://en.cppreference.com/w/cpp/language/explicit_cast(。 param 的类型与您的Mat* image不同,因此您不能简单地将指针分配给 param ,它很可能与Mat*(参见 Juanchopanza 的问题(不同的类型image。所以你必须告诉编译器,即使指针类型不同,底层对象类型也与分配给Mat *兼容。

您提到的另一件事:Mat *param具有完全不同的含义,这意味着您正在创建一个名为 param 的新Mat指针。