Win7系统Visual Studio下的armadillo环境配置

2023-10-18 16:59

本文主要是介绍Win7系统Visual Studio下的armadillo环境配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Armadillo 环境配置

Armadillo是一款对于C++的线性代数库,可以进行矩阵运算,在MATLAB转C/C++时可以更加方便。下面是armadillo的安装和配置。

这里写图片描述

首先,下载armadillo,地址(http://arma.sourceforge.net/)。

这里选择稳定版本armadillo-8.100.1,解压,将其中的include文件夹复制到指定的文件夹下。(这里将其拷贝至D:/Armadillo)

修改D:\Armadillo\include\armadillo_bits中的config.hpp

这里写图片描述

取消以下两句中的注释符号,如上图所示。

#define ARMA_USE_LAPACK
#define ARMA_USE_BLAS

这样表示使用LAPACK和BLAS两个库。1

BLAS的官方文档介绍:

The BLAS (Basic Linear Algebra Subprograms)are routines that provide standard building blocks for performing basic vectorand matrix operations. The Level 1 BLAS perform scalar, vector andvector-vector operations, the Level 2 BLAS perform matrix-vector operations,and the Level 3 BLAS perform matrix-matrix operations. Because the BLAS areefficient, portable, and widely available, they are commonly used in thedevelopment of high quality linear algebra software, LAPACK for example.

LAPACK的官方文档介绍:

LAPACK is written in Fortran 90 and providesroutines for solving systems of simultaneous linear equations, least-squaressolutions of linear systems of equations, eigenvalue problems, and singularvalue problems. The associated matrix factorizations (LU, Cholesky, QR, SVD,Schur, generalized Schur) are also provided, as are related computations suchas reordering of the Schur factorizations and estimating condition numbers.Dense and banded matrices are handled, but not general sparse matrices. In allareas, similar functionality is provided for real and complex matrices, in bothsingle and double precision.

需要下载LAPACK和BLAS两个库,实际上armadillo自带这两个库,在.\armadillo-8.100.1\examples\lib_win64中,但是是64位,因此需要下载32位的这两个库。

下载完成后,在visual studio中配好lib目录,include目录,附加依赖项。(配置方法类似上文opencv库的配法)。运行程序,出错。报错如下:

这里写图片描述

提示没有lapack32位的动态链接库dll文件。下载lapack_win32_MTd.dll和blas_win32_MTd.dll以及不带d的版本(release版)的dll,拷贝至指定目录,此处是Windows中的SysWOW64。再运行程序,点击生成解决方案,查看结果。

例程:

#include<opencv2/opencv.hpp>
#include <armadillo>
#include <iostream>
using namespace cv;
using namespace arma;
using namespace std;
int main()
{arma::matA = arma::randu<mat>(5,5);cout<<"A= "<<A<<endl;cout<<"det(A)= "<<arma::det(A)<<endl;cv::Matimg = cv::imread("test.jpg",1);cv::Matgrey;cv::cvtColor(img,grey, CV_BGR2GRAY);cv::Matsobelx; cv::Sobel(grey,sobelx, CV_32F, 1, 0);double minVal, maxVal; cv::minMaxLoc(sobelx,&minVal, &maxVal); //find minimum and maximum intensities cv::Matdraw; sobelx.convertTo(draw,CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal)); cv::namedWindow("src",CV_WINDOW_AUTOSIZE); cv::imshow("src",img); cv::namedWindow("dst",CV_WINDOW_AUTOSIZE); cv::imshow("dst",draw);cv::waitKey(); return 0;  
}  

该例程即再上文中测试opencv的基础上,include进armadillo,并且using namespace arma;注意,由于armadillo和opencv中都有Mat类型,因此同时usingnamespace cv 和arma会出现冲突,因此需要域运算符。

结果如下(只显示console中的结果):

这里写图片描述

成功啦~哈哈哈

附录:MATLAB和armadillo的转换关系

这里写图片描述
这里写图片描述

Reference:

http://arma.sourceforge.net/docs.html
http://www.netlib.org/blas/
http://www.netlib.org/lapack/

这里写图片描述


  1. 【注:LAPACK是LinearAlgebra PACKage的缩写,由其官方文档(如下)可以看出,LAPACK可以解决线性方程,最小二乘法,特征值分解,以及各类矩阵分解,如LU,QR,Cholesky,svd等。而BLAS是Basic Linear Algebra Subprograms的缩写,可以看出,BLAS提供较为底层的矢量和矩阵运算,Level1标量,矢量,矢量-矢量,Level2 矢量-矩阵,Level3 矩阵-矩阵,LAPACK也是基于BLAS】 ↩

这篇关于Win7系统Visual Studio下的armadillo环境配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233949

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技