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,发现也能执行,所以觉得有点坑,大家可以借鉴一下。