通常,如果我的数据是非常量的,我可以在它上面初始化一个cv :: Mat头来进行代数操作.
float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, awesome_data);
Run Code Online (Sandbox Code Playgroud)
但是,如果我的数据是常量
const float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, awesome_data);
Run Code Online (Sandbox Code Playgroud)
会有错误:unable to convert from const void * to void *.我知道我不会改变awesome_mat,最好的方法是什么?
目前,我必须做一个const演员
const float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, const_cast<float *>(awesome_data));
Run Code Online (Sandbox Code Playgroud)
中的数据cv::Mat总是可以修改的。为了更安全,您应该复制数据:
const float awesome_data[24] = {0};
cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, const_cast<float *>(awesome_data)).clone();
Run Code Online (Sandbox Code Playgroud)
与const cv::Mat只有矩阵头是只读的,但不是数据(使用“常量CV ::垫&”的差异,“CV ::垫&”,“CV ::垫”或“常量CV ::垫”为函数参数? ):
const cv::Mat mat = cv::Mat::zeros(6, 4, CV_32F);
mat += 1; // compiles and runs fine!
Run Code Online (Sandbox Code Playgroud)
据我所知,OpenCV没有const_Mat类。然而,通过使用
const float awesome_data[24] = {0};
const cv::Mat awesome_mat = cv::Mat(6, 4, CV_32F, const_cast<float *>(awesome_data));
Run Code Online (Sandbox Code Playgroud)
你保持恒定性。
| 归档时间: |
|
| 查看次数: |
6053 次 |
| 最近记录: |