1 votes

Problèmes d'installation d'Opencv 2.0 sur Ubuntu 14.0

J'ai des problèmes pour installer OpenCV 2.0 sur Ubuntu 14.04. Lorsque je veux installer les dépendances, j'ai le problème suivant :

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.

Je veux installer OpenCV 2.0 parce qu'il y a un vieux projet qui utilise cette version d'OpenCV.

Mise à jour 1

1 : J'ai installé libtiff5-dev mais il y a eu une autre erreur :

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.

J'ai ensuite supprimé libjpeg-turbo8-dev mais cela a désinstallé libtiff5-dev. Quelqu'un a posté ce problème il y a environ 4 ans sans trouver de solution :

http://ubuntuforums.org/showthread.php?t=1985957

Mise à jour 2

J'ai utilisé aptitude au lieu d'apt-get pour installer les dépendances. Tout s'est bien passé mais j'ai vérifié que j'avais bien ffmpeg et v4l comme no. Je n'ai pas fait attention et j'ai essayé de compiler la bibliothèque. J'ai obtenu les erreurs de compilation suivantes :

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

0voto

c0rp Points 9110

J'ai testé cela sur des Ubuntu 12.04 et 14.04 fraîchement installées, et les deux donnent pratiquement la même erreur. Erreur concernant ibjpeg-turbo8-dev : Conflicts: libjpeg62-dev .

Si vous utilisez une machine virtuelle et que vous êtes ne pas avoir peur de l'endommager vous pouvez essayer de lancer cette commande. Accepter tout ce que aptitute suggérera et procédera au résultat.

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

Mise à jour

Après l'installation via aptitude OP, il y a un problème de compilation. Ce problème est résolu par la suggestion de @steeldriver dans les commentaires :

Essayez d'éditer le fichier include/opencv/cxcore.hpp du paquet et d'ajouter #include <cstddef> à sa liste d'en-têtes standard : voir ici http://code.opencv.org/issues/1028

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X