本文介绍在C++语言中,矩阵库Armadillo的mat
、vec
格式数据与计算机视觉库OpenCV的Mat
格式数据相互转换的方法。
在C++语言的矩阵库Armadillo与计算机视觉库OpenCV中,都有矩阵格式的数据类型;而这两个库在运行能力方面各有千秋,因此实际应用过程中,难免会遇到需要将二者的矩阵格式数据类型加以相互转换的情况。本文就对其相互转换的具体方法加以介绍。
首先,二者相互转换需要用到的代码如下。
#include
#include
#include
using namespace std;
int main() {
// 将Armadillo的列向量vec转为OpenCV的Mat
arma::vec ar_vec = {1, 2, 3, 4};
cout (2, 3) (cv_mat.data), cv_mat.cols, cv_mat.rows);
cout (1, 4) (cv_mat_3.data), cv_mat_3.cols, cv_mat_3.rows);
cout
其中,主函数中共有4个部分,分别是将Armadillo服务器托管网的列向量vec
转为OpenCV的Mat
、将Armadillo的mat
转为OpenCV的Mat
、将OpenCV的Mat
转为Armadillo的mat
、将Op服务器托管网enCV的Mat
转为Armadillo的列向量vec
或行向量rowvec
等4个过程的代码。
转换的整体思路也非常简单。如果我们需要将Armadillo库的矩阵数据转换为OpenCV库的矩阵数据,那么就通过cv::Mat
格式数据的构造函数,基于.memptr()
函数将Armadillo库的矩阵数据元素分别提取出,放入OpenCV库的矩阵数据即可;反之,如果需要将OpenCV库的矩阵数据转换为Armadillo库的矩阵数据,则基于arma::mat
格式数据的构造函数来实现即可。
有一点需要注意的是,Armadillo库是以列优先的方式存储矩阵数据,而OpenCV库则是以行优先的方式存储矩阵数据;因此在上述二者相互转换的代码中,我们有时需要对转换的矩阵数据做一次转置操作,从而保证数据转换无误。
为了方便对比,我们将上述代码运行所得结果加以展示;如下图所示。
可以看到,上述三段代码可以成功地将Armadillo库、OpenCV库的矩阵数据加以相互转换。
至此,大功告成。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 漏洞处置:HTTP/2 快速重置攻击对 F5 NGINX 的影响
原文作者:Michael Vernik,Nina Forsyth 原文链接:漏洞处置:HTTP/2 快速重置攻击对 F5 NGINX 的影响 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在nginx.org.cn 本文主要介绍了最近发现的…