我正在尝试使用OpenCV contrib repository https://github.com/opencv/opencv_contrib/tree/master/modules/matlab提供的Matlab mex包装器。 在OpenCV安装期间,一切都很顺利,cmake可以找到Matlab安装。我的操作系统是ubuntu 16.04 64位,我正在使用Matlab R2015b。
成功安装后,为了解决内部动态库引起的冲突,我在启动matlab之前将libstdc ++或libgcc_s放在LD_PRELOAD变量中。此外,基于opencv文档(opencv_contrib / modules / matlab /),我使用" addpath(' / path / to / opencv / matlab /')添加了绑定到matlab路径;& #34;
运行以下代码后(在opencv文档中提供):
% load an image (Matlab)
I = imread('cameraman.tif');
% compute the DFT (OpenCV)
If = cv.dft(I, cv.DFT_COMPLEX_OUTPUT);
我的代码工作正常,但每当我使用
时I=imread('cameraman.tif');
cv.imshow('test',I)
或
cv.imread('cameraman.tif');
(或者我认为opencv highgui模块中提供的所有模块),我在matlab中遇到以下错误:
无效的MEX文件' /usr/local/opencv-3.1.0/matlab/+cv/imread.mexa64':/usr/lib/libgdal.so.1: 未定义的符号:_ZN11xercesc_3_111InputSource11setEncodingEPKt
我经常搜索以解决问题,但我无法取得任何成功。我还尝试在opencv cmake安装期间使用标志-D WITH_GDAL = OFF构建opencv,但它不仅解决了问题,而且在调用上述代码后也使matlab崩溃。