Problemas na instalação do Opencv 2.0 no Ubuntu 14.0

1

Estou tendo problemas ao tentar instalar o OpenCV 2.0 no Ubuntu 14.04. Quando eu quero instalar as dependências eu tenho o seguinte problema:

andres@andres-VirtualBox:~$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
[sudo] password for andres:
Reading package lists...
Done Building dependency tree  Reading state information...
Done Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created or been
moved out of Incoming. The following information may help to resolve the
situation:

The following packages have unmet dependencies:
libtiff4-dev : Depends: libtiff5-dev (> 4.0.3-6~) but it is not going to be installed 
E: Unable to correct problems, you have held broken packages.

Eu quero instalar o OpenCV 2.0 porque existe um projeto antigo que usa essa versão do OpenCV.

Atualização 1

1: Eu instalei o libtiff5-dev, mas ele gerou outro erro:

The following packages have unmet dependencies:
 libjpeg-turbo8-dev : Conflicts: libjpeg62-dev but 6b1-4ubuntu1 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Então eu removi o libjpeg-turbo8-dev mas ele desinstalou o libtiff5-dev. Alguém postou sobre o problema há 4 anos sem uma solução:

link

Atualização 2

Eu usei o aptitude em vez do apt-get para instalar as dependências. Tudo correu bem, mas eu verifiquei que eu tenho ffmpeg e v4l como não. Eu não me importei e tentei compilar a biblioteca. Eu tenho os seguintes erros de compilação:

In file included from ../include/opencv/cxcore.h:2123:0,
                 from cxcore/_cxcore.h:60,
                 from cxcore/cxprecomp.cpp:43:
../include/opencv/cxcore.hpp:169:13: error: ‘ptrdiff_t’ does not name a type
     typedef ptrdiff_t difference_type;
             ^
In file included from ../include/opencv/cxcore.hpp:2243:0,
                 from ../include/opencv/cxcore.h:2123,
                 from cxcore/_cxcore.h:60,
                 from cxcore/cxprecomp.cpp:43:
../include/opencv/cxoperations.hpp:1916:15: error: ‘ptrdiff_t’ does not name a type
 static inline ptrdiff_t operator - (const FileNodeIterator& it1, const FileNodeIterator& it2)
               ^
../include/opencv/cxoperations.hpp:2465:31: error: ‘ptrdiff_t’ does not name a type
 template<typename _Tp> inline ptrdiff_t operator - (const SeqIterator<_Tp>& a,
                               ^
In file included from ../include/opencv/cxcore.hpp:2244:0,
                 from ../include/opencv/cxcore.h:2123,
                 from cxcore/_cxcore.h:60,
                 from cxcore/cxprecomp.cpp:43:
../include/opencv/cxmat.hpp: In member function ‘void cv::Mat::locateROI(cv::Size&, cv::Point&) const’:
../include/opencv/cxmat.hpp:356:5: error: ‘ptrdiff_t’ was not declared in this scope
     ptrdiff_t delta1 = data - datastart, delta2 = dataend - datastart;
     ^
../include/opencv/cxmat.hpp:356:5: note: suggested alternatives:
In file included from /usr/include/c++/4.8/utility:68:0,
                 from /usr/include/c++/4.8/algorithm:60,
                 from ../include/opencv/cxcore.hpp:51,
                 from ../include/opencv/cxcore.h:2123,
                 from cxcore/_cxcore.h:60,
                 from cxcore/cxprecomp.cpp:43:
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note:   ‘std::ptrdiff_t’
   typedef __PTRDIFF_TYPE__ ptrdiff_t;
                            ^
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note:   ‘std::ptrdiff_t’
In file included from ../include/opencv/cxcore.hpp:2244:0,
                 from ../include/opencv/cxcore.h:2123,
                 from cxcore/_cxcore.h:60,
                 from cxcore/cxprecomp.cpp:43:
../include/opencv/cxmat.hpp:356:15: error: expected ‘;’ before ‘delta1’
     ptrdiff_t delta1 = data - datastart, delta2 = dataend - datastart;
               ^
../include/opencv/cxmat.hpp:358:9: error: ‘delta1’ was not declared in this scope
     if( delta1 == 0 )
         ^
../include/opencv/cxmat.hpp:367:31: error: ‘delta2’ was not declared in this scope
     wholeSize.height = (int)((delta2 - minstep)/step + 1);
                               ^
make[2]: *** [cxprecomp.lo] Error 1
make[2]: Leaving directory '/home/andres/OpenCV-2.0.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/andres/OpenCV-2.0.0'
make: *** [all] Error 2
    
por andrestoga 15.02.2016 / 02:14

1 resposta

0

Eu testei isso no novo Ubuntu 12.04 e 14.04, e ambos dão quase o mesmo erro. Erro referente a ibjpeg-turbo8-dev : Conflicts: libjpeg62-dev .

Se você estiver usando uma máquina virtual e não tiver medo de danificá-la, tente executar este comando. Aceite tudo o que aptitute irá sugerir e continue com o resultado.

sudo aptitude install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev

Atualizar

Após a instalação via aptitude OP, obtenha o problema de compilação. Este problema foi resolvido com a sugestão @steeldriver nos comentários:

Try editing the package's include/opencv/cxcore.hpp file and adding #include <cstddef> to its list of standard headers: see here http://code.opencv.org/issues/1028

    
por c0rp 15.02.2016 / 03:33