matlab和opencv混编(mex问题,mexopencv问题)(水下相机折射补偿:Pinax-model)
1.mexopencv
这是个程序,实现了在matlab方便地引入opencv。
有众多版本,不同版本对应不同opencv。
mexopencv 2.4(适用opencv2.4及以上版本):
https://github.com/kyamagu/mexopencv/tree/v2.4
mexopencv 3.4.1(适用opencv3.4.1版本):
https://github.com/kyamagu/mexopencv
下载了解压就好,不用安装。
2.opencv
opencv2的版本直接压就可以使用
opencv3下载后,需要用cmake编译一下,然后在vs中生成,才能用。
(其中可能遇到的问题:编译时出现红色字体错误,建议编译时把电脑装的python和cuda卸载了,因为有这两个在opencv3编译时会对这两项进行编译,但是这样由于版本问题以及安装环境问题很容易造成错误,所以干脆不要编译了;在vs生成时也是,如果之前存在python,生成会出现找不到lib的错误)
这里还要提示一下,用mexopencv 3.4.1时,其寻找大连接为…….lib,而咱们debug生成的文件为……d.lib,所以很容易找不到lib,因此在vs生成时选用Release

对两项进行生成。
3.matlab使用opencv
在matlab中使用下列语句进行调用和编译
addpath('E:\opencv\mexopencv-2.4')%mexopencv的解压位置
mexopencv.make('opencv_path','E:\opencv\opencv\build')%opencv的build位置,opencv3的为install位置
完成后就可以在matlab中用opencv的程序了,需要哪个函数,直接cv.哪个函数
例如
img=cv.imread('Img.jpg');
4.水下相机折射补偿
The Pinax-Model for Accurate and Efficient Refraction Correction of Underwater Cameras in Flat-Pane Housings: MATLAB Examples
https://github.com/tomluc/Pinax-camera-model
本文做了两点
①找到了最合适的相机到玻璃的距离,使得发生折射后的相机更接近小孔相机
②利用空气中标定的参数,再利用相机到玻璃的距离、玻璃厚度、以及玻璃和水的折射率获得折射补偿函数,进而对折射进行修正。
原文中说的
To run this example mex opencv is required (https://github.com/kyamagu/mexopencv).
这个需要用到opencv3.4.1,然后怎么弄都不对,后来直接用opencv2.4,发现也能执行,所以觉得有点坑,大家可以借鉴一下。
智能推荐
vs2013+matlab2015b+mexopencv
1.源码准备 2.cmake配置 2.1将源文件夹设置为 E:\software\opencv3.4 2.2将目标文件夹设置为: E:\software\opencv3.4\build 2.3按配置,然后选择Visual Studio 2013 Win64编译器 2.4在“BUILD”组下,取消选择以下内容: BUILD_DOCS,BUILD_EXAMPLES,BUILD_...
matlab的mexopencv库的安装
本人原本并不精通Matlab,也初次接触这一图像处理板块,现因工作需要,在给matlab安装opencv库时,遇到了许多问题,经过不懈努力,终于解决了,哭死。起初不知道问题在哪烦了好几天,现在解决了赶紧分享一下喜悦,我用的版本分别是:matlab2021b;opencv3.4.1;mexopencv-3.4.1;(版本不对应,本人两行泪) 接下来介绍安装步骤: 首先安装opencv板块,先不急着下...
Matlab中mex, mexcuda和nvcc编译的不同
1. mex: 既是一个路径名称也是一个函数名称,作为函数,其作用是编译并链接源文件到一个共享的库中(shared library),这个共享的库称为mex-file,可以在MATLAB中运行,为单独的MATLAb引擎和MAT文件应用构建可执行程序,可以看作是matlab execute(mex)的简写。 2. mexcuda:编译一个mex-function用于GPU计算。具体为编译并链接源文件...
Qt和matlab的混编详细步骤(fft)
Qt和matlab的混编详细步骤(fft) 一、混编步骤 1、 用matlab写函数(.m文件) 我这里是弄了一个fft的函数,文件名是CS_FFT.m,程序如下: 2、 将函数转换为动态链接库 matlab命令行中输入如下命令: mbuild –setup mex -setup matlab运行结果如下: 然后再使用mcc命令:mcc -W cpplib:CS_FFT -T link...
QT与MatLab混编
该篇介绍QT下调用MatLab编译好的运行库 环境:Windows10,QT5.12.6,MatLab r2018b 64位 MatLab的安装可以看这篇文章MatLab安装 一、打开MatLab,先设置编译器,在命令行输入: >> mbuild -setup C++ 结果如下: 即设置C++编译器,如果设置C编译器可以输入 mbuild -setup 二、编译.m文件,命令行输入&g...
猜你喜欢
使用basler相机Basler.Pylon.dll和opencv的opencv_world340.dll保存图片有时出现保存时间长达几秒的问题
使用basler相机Basler.Pylon.dll和opencv的opencv_world340.dll保存图片有时出现保存时间长达几秒的问题 1、原先使用了basler.pylon.dll中的 来存储图片,但发现图片有时存储时间有1秒多 于是使用了opencv来存储图片 但发现还是有问题,有时还是有点慢 最后发现是生成自己的dll时引用的是v15下面的opencv_world340.dll,而...
VUE给动态生成的el-checkbox添加v-model
需求描述:根据返回的数据,页面动态for循环添加el-checkbox,动态绑定v-model; html代码: tabList数据格式: 之前的错误做法: 开始以为这样就可以了,毕竟在el-checkbox上用item.status绑定v-model,后面发现checkbox点击的时候并没有更新; 解决方案: 官方文档...
[UE4]蓝图和C++调用自定义函数
1、C++自定义方法,蓝图调用 UFUNCTION宏是处理将C++函数暴露给反射系统的一些事情,参数BlueprintCallable意味着这个函数可以在蓝图中调用,而后面的目录是必须有的,这样在蓝图中右键点击的时候,我们就可以根据这个目录找到我们需要的函数。 2、蓝图定义方法,C++调用 当我们在蓝图中定义了一系列操作后,我们也想用C++调用,我们利用BlueprintImplementable...
Redis--2.Jedis的介绍和使用
一.概念 Jedis是Redis官方推荐使用的的一个Java连接开发的工具(中间件)。 Jedis主要是集成了redis的一些命令操作,封装了redis的java客户端。 使用Jedis操作Redis数据库,就相当于使用JDBC操作sql_server、Mysql数据库。 二.两种连接方式 1.Jedis对象直连Redis Jedis对象直连方式可以分为五个步骤: 1、导入Jedis的jar包 2...
选择图片上传之后,图片旋转问题解决方案(前端)
图片上传之后,显示为什么会是旋转的呢? 这就要说到图片的 exif 简单来说,Exif 信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在我们熟知的 JPEG/TIFF 文件的头部,也就是说 Exif信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数,它就好像是相机的日期打印功能一样,只不过 Exif信息所记录的资讯更为详尽和完备。Exif 所记录的元数据信息非常丰富,主...
