OpenCV mat * image =(Mat *)图片

时间:2014-08-30 08:41:56

标签: c++ opencv

您好我是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 *)param而不只是把Mat * param。

提前致谢!

1 个答案:

答案 0 :(得分:1)

此示例中的内容是显式类型转换(请参阅例如http://en.cppreference.com/w/cpp/language/explicit_cast)。 paramMat* image的类型不同,因此您不能简单地指定指针param,它很可能与Mat*具有不同的类型(请参阅juanchopanza的问题)到image。因此,您必须告诉编译器即使指针类型不同,底层对象类型也与分配给Mat *兼容。

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