erro de mex do OpenTLD MatLAB, biblioteca OpenCV

2

Estou usando o Ubuntu 16.04 e a versão de estudante do MatLAB R2016b, o OpenCV 3.1 instalado seguindo este tutorial .

Eu baixei o código-fonte do algoritmo de rastreamento do OpenTLD e estou tentando executar o arquivo compile.m e encontrar os seguintes erros

Como nota lateral, implementei as alterações que resolvem o problema ao procurar o arquivo de cabeçalho cv.h

As definições foram

(#include "cv.h")
(#include "highgui.h")

e foram alterados para

(#include <opencv/cv.h>)

O erro que recebo ao executar compile.m

Error using mex
/tmp/mex_36621193718999_4249/lk.o: In function 'normCrossCorrelation(_IplImage*, _IplImage*, CvPoint2D32f*, CvPoint2D32f*,
int, char*, float*, int, int)':
lk.cpp:(.text+0x1a0): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x1b9): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x1d6): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x214): undefined reference to 'cvGetRectSubPix'
lk.cpp:(.text+0x227): undefined reference to 'cvGetRectSubPix'
lk.cpp:(.text+0x23b): undefined reference to 'cvMatchTemplate'
lk.cpp:(.text+0x274): undefined reference to 'cvReleaseImage'
lk.cpp:(.text+0x27d): undefined reference to 'cvReleaseImage'
lk.cpp:(.text+0x286): undefined reference to 'cvReleaseImage'
/tmp/mex_36621193718999_4249/lk.o: In function 'mexFunction':
lk.cpp:(.text+0x323): undefined reference to 'cvReleaseImage'
lk.cpp:(.text+0x341): undefined reference to 'cvReleaseImage'
lk.cpp:(.text+0x438): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x455): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x4be): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x4dc): undefined reference to 'cvCreateImage'
lk.cpp:(.text+0x553): undefined reference to 'cvAlloc'
lk.cpp:(.text+0x565): undefined reference to 'cvAlloc'
lk.cpp:(.text+0x578): undefined reference to 'cvAlloc'
lk.cpp:(.text+0x613): undefined reference to 'cvAlloc'
lk.cpp:(.text+0x61e): undefined reference to 'cvAlloc'
/tmp/mex_36621193718999_4249/lk.o:lk.cpp:(.text+0x626): more undefined references to 'cvAlloc' follow
/tmp/mex_36621193718999_4249/lk.o: In function 'mexFunction':
lk.cpp:(.text+0x6c1): undefined reference to 'cvCalcOpticalFlowPyrLK'
lk.cpp:(.text+0x73e): undefined reference to 'cvCalcOpticalFlowPyrLK'
collect2: error: ld returned 1 exit status


Error in compile (line 77)
    eval(['mex lk.cpp -O' include lib]);
    
por Gerard Walsh 21.02.2017 / 13:28

1 resposta

0

Parece que o compile.m fornecido é hard-wired para uma versão (e local) específica do OpenCV:

if isunix
    disp('Unix');

    include = ' -I/usr/local/include/opencv/ -I/usr/local/include/';
    libpath = '/usr/local/lib/';

    files = dir([libpath 'libopencv*.so.2.2']);

Consegui compilar e vincular no Ubuntu 16.04 de 64 bits com o padrão libopencv-dev 2.4.9 do repositório fazendo as seguintes alterações:

if isunix
    disp('Unix');

    include = ' -I/usr/include/opencv/ -I/usr/include/';
    libpath = '/usr/lib/x86_64-linux-gnu/';

    files = dir([libpath 'libopencv*.so.2.4'])

NB Eu não tentei testar os objetos mexa64 resultantes

    
por steeldriver 21.02.2017 / 21:58