为常量数据创建cv :: Mat标头
||
通常,如果我的数据是非常量的,则可以在其顶部初始化cv :: Mat标头以进行代数处理。
float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, awesome_data);
但是,如果我的数据是常量
const float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, awesome_data);
将出现错误:unable to convert from const void * to void *
。我知道我不会更改awesome_mat,最好的方法是什么?
目前,我必须进行const cast
const float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, const_cast<float *>(awesome_data));
没有找到相关结果
已邀请:
4 个回复
臀博
中的数据可以随时修改。为了更安全,您应该复制数据:
对于“ 6”,仅矩阵标题是只读的,而不是数据(使用“ const cv :: Mat&”,“ cv :: Mat&”,“ cv :: Mat”或“ const cv :: Mat”作为函数参数的区别) ?):
镰茧钩
您可以保持不变。
浩挎
(一种方法或另一种方法)。 @ R1tschY的解决方案使用OpenCV方法复制数据,该方法本身需要
。为了完全避免使用“ 10”,应将内存复制到OpenCV之外(因为OpenCV不遵守const数据)。这将是一种方式:
孝箱捆讨