您的位置:首页 > 其它

arma::mat与cv::Mat转换

2016-04-06 14:17 387 查看
首先简要介绍一下,今天涉及到的两个库:Armadillo是目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择。OpenCV在计算机视觉领域中地位不必多说,OpenCV自带的矩阵计算功能算不上是专业的矩阵计算库。现在的问题是,在同一个项目里同时使用两个库,它们的类型转换该怎么办?

转换函数:

static void Cv_mat_to_arma_mat(const cv::Mat& cv_mat_in, arma::mat& arma_mat_out)
{//convert unsigned int cv::Mat to arma::Mat<double>
for(int r=0;r<cv_mat_in.rows;r++){
for(int c=0;c<cv_mat_in.cols;c++){
arma_mat_out(r,c)=cv_mat_in.data[r*cv_mat_in.cols+c]/255.0;
}
}
};
template<typename T>
static void Arma_mat_to_cv_mat(const arma::Mat<T>& arma_mat_in,cv::Mat_<T>& cv_mat_out)
{
cv::transpose(cv::Mat_<T>(static_cast<int>(arma_mat_in.n_cols),
static_cast<int>(arma_mat_in.n_rows),
const_cast<T*>(arma_mat_in.memptr())),
cv_mat_out);
};


调用:

//convert cv::Mat to arma::mat
arma::mat img(cvImg.rows,cvImg.cols);//cvImg is a cv::Mat
Cv_mat_to_arma_mat(cvImg,img);


//convert arma::mat to cv::Mat
cv::Mat_<double> cv_img;
Arma_mat_to_cv_mat<double>(arma_img,cv_img);


参考:

C++矩阵运算库推荐 /article/7929651.html

Convert CV::Mat To Arma::mat http://stackoverflow.com/questions/26118862/convert-cvmat-to-armamat

【OpenCV】访问Mat图像中每个像素的值 /article/1357511.html

armadillo 官方文档:http://arma.sourceforge.net/docs.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: