我在我的项目中使用第 3 方 SDK,它接受void *
用于设置用户特定元数据的指针。但是我的元数据是cv::Mat
格式的,因此我需要转换cv::Mat
asvoid *
指针,如下所示:
void *set_metadata_ptr(cv::Mat frame)
{
cv::Mat *user_metadata = new cv::Mat();
frame.copyTo(*user_metadata);
return (void *)user_metadata;
}
void foo()
{
UserMeta *user_meta = /* ... */;
user_meta->user_meta_data = (void *)set_metadata_ptr(frame);
}
这很好用,但许多OpenCV高级用户不鼓励使用带有 cv::Mat 的指针,因为 cv::Mat 本身具有智能指针。我想知道在我的情况下是否有更好的方法将 cv::Mat 转换为 void-pointer?