There have been a few discussions on how to install ROS along side with OpenCV4Tegra. To install ROS packages related to opencv, the aptitude system will report libopencv-* not installed yet. Furthermore, apt-get will notice a conflict between the vanilla opencv and OoenCV4Tegra. Thus, it will suggest the user to uninstall OpenCV4Tegra in order to install opencv, which is required by those ROS packages.
After looking into this issue, I figured out the problem. The cause is that OpenCV4Tegra specifies the package relationships incorrectly. It only declares OpenCV4Tegra conflicts with the upstream opencv, but hasn’t declared OpenCV4Tegra provides the packages of opencv. Thus, once to install a package depending on opencv, the aptitude system would think that opencv has not been installed yet. To install opencv (which it should not), the aptitude asks user if to uninstall OpenCV4Tegra (since OpenCV4Tegra itself specifies a conflict with opencv).
To solve this problem, I had to manually unpack the OpenCV4Tegra debian packages, update the DEBIAN/control file, rebuild the debian packages, and then install manually with dpkg -i
Roughly, the process is as follows.
download libopencv4tegra-repo
$ sudo dpkg -i libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb
$ cd /var/opencv4tegra-repo
$ sudo dpkg-deb -R libopencv4tegra_2.4.10.1_armhf.deb libopencv4tegra_2.4.10.1_armhf
$ sudo vi libopencv4tegra_2.4.10.1_armhf/DEBIAN/control
update w.r.t. the contents below
$ sudo dpkg-deb -b libopencv4tegra_2.4.10.1_armhf libopencv4tegra_2.4.10.1_armhf_mod.deb
$ sudo dpkg -i libopencv4tegra_2.4.10.1_armhf_mod.deb
repeat the same thing for libopencv4tegra-dev_2.4.10.1_armhf.deb
and libopencv4tegra-python_2.4.10.1_armhf.deb
The correct relationship should be as follows. (Pasting my modified DEBIAN/control files)
Hope NVIDIA can fix this issue in the next release.
libopencv4tegra_2.4.10.1_armhf/DEBIAN/control
Package: libopencv4tegra
Version: 2.4.10.1
Section: libs
Priority: optional
Architecture: armhf
Depends: libavcodec54 (>= 6:9.1-1) | libavcodec-extra-54 (>= 6:9.16), libavformat54 (>= 6:9.1-1), libavutil52 (>= 6:9.1-1), libc6 (>= 2.15), libgcc1 (>= 1:4.4.0), libglib2.0-0 (>= 2.31.8), libgtk2.0-0 (>= 2.8.0), libjasper1, libjpeg8 (>= 8c), libpng12-0 (>= 1.2.13-4), libstdc++6 (>= 4.6), libswscale2 (>= 6:9.1-1), libtiff5 (>= 4.0.3), zlib1g (>= 1:1.1.4), cuda-cudart-6-5, cuda-npp-6-5, cuda-cufft-6-5
Homepage: http://opencv.org
Conflicts:libopencv-calib3d2.4,libopencv-contrib2.4,libopencv-core2.4,libopencv-features2d2.4,libopencv-flann2.4,libopencv-gpu2.4,libopencv-highgui2.4,libopencv-imgproc2.4,libopencv-legacy2.4,libopencv-ml2.4,libopencv-objdetect2.4,libopencv-ocl2.4,libopencv-photo2.4,libopencv-stitching2.4,libopencv-superres2.4,libopencv-ts2.4,libopencv-video2.4,libopencv-videostab2.4
Provides:libopencv-calib3d2.4,libopencv-contrib2.4,libopencv-core2.4,libopencv-features2d2.4,libopencv-flann2.4,libopencv-gpu2.4,libopencv-highgui2.4,libopencv-imgproc2.4,libopencv-legacy2.4,libopencv-ml2.4,libopencv-objdetect2.4,libopencv-ocl2.4,libopencv-photo2.4,libopencv-stitching2.4,libopencv-superres2.4,libopencv-ts2.4,libopencv-video2.4,libopencv-videostab2.4
Replaces:libopencv-calib3d2.4,libopencv-contrib2.4,libopencv-core2.4,libopencv-features2d2.4,libopencv-flann2.4,libopencv-gpu2.4,libopencv-highgui2.4,libopencv-imgproc2.4,libopencv-legacy2.4,libopencv-ml2.4,libopencv-objdetect2.4,libopencv-ocl2.4,libopencv-photo2.4,libopencv-stitching2.4,libopencv-superres2.4,libopencv-ts2.4,libopencv-video2.4,libopencv-videostab2.4
Installed-Size: 239054
Maintainer: Alban Douillet <adouillet@nvidia.com>
Description: OpenCV4Tegra
Tegra optimized Open Computer Vision Library
libopencv4tegra-dev_2.4.10.1_armhf/DEBIAN/control
Package: libopencv4tegra-dev
Version: 2.4.10.1
Section: libdevel
Priority: optional
Architecture: armhf
Depends: libopencv4tegra (= 2.4.10.1), libc6 (>= 2.4), libgcc1 (>= 1:4.4.0), libstdc++6 (>= 4.4.0), cuda-cudart-dev-6-5, cuda-npp-dev-6-5, cuda-cufft-dev-6-5
Homepage: http://opencv.org
Conflicts:libopencv-calib3d-dev,libopencv-contrib-dev,libopencv-core-dev,libopencv-dev,libopencv-features2d-dev,libopencv-flann-dev,libopencv-gpu-dev,libopencv-highgui-dev,libopencv-imgproc-dev,libopencv-legacy-dev,libopencv-ml-dev,libopencv-objdetect-dev,libopencv-ocl-dev,libopencv-photo-dev,libopencv-stitching-dev,libopencv-superres-dev,libopencv-ts-dev,libopencv-video-dev,libopencv-videostab-dev
Provides:libopencv-calib3d-dev,libopencv-contrib-dev,libopencv-core-dev,libopencv-dev,libopencv-features2d-dev,libopencv-flann-dev,libopencv-gpu-dev,libopencv-highgui-dev,libopencv-imgproc-dev,libopencv-legacy-dev,libopencv-ml-dev,libopencv-objdetect-dev,libopencv-ocl-dev,libopencv-photo-dev,libopencv-stitching-dev,libopencv-superres-dev,libopencv-ts-dev,libopencv-video-dev,libopencv-videostab-dev
Replaces:libopencv-calib3d-dev,libopencv-contrib-dev,libopencv-core-dev,libopencv-dev,libopencv-features2d-dev,libopencv-flann-dev,libopencv-gpu-dev,libopencv-highgui-dev,libopencv-imgproc-dev,libopencv-legacy-dev,libopencv-ml-dev,libopencv-objdetect-dev,libopencv-ocl-dev,libopencv-photo-dev,libopencv-stitching-dev,libopencv-superres-dev,libopencv-ts-dev,libopencv-video-dev,libopencv-videostab-dev
Installed-Size: 5275
Maintainer: Alban Douillet <adouillet@nvidia.com>
Description: OpenCV4Tegra
Development files for Tegra optimized Open Source Computer Vision Library
libopencv4tegra-python_2.4.10.1_armhf/DEBIAN/control
Package: libopencv4tegra-python
Version: 2.4.10.1
Section: python
Priority: optional
Architecture: armhf
Depends: libopencv4tegra (= 2.4.10.1), libc6 (>= 2.4), libgcc1 (>= 1:4.4.0), libpython2.7 (>= 2.7), libstdc++6 (>= 4.4.0), python2.7
Homepage: http://opencv.org
Conflicts:python-opencv
Replaces:python-opencv
Provides:python-opencv
Installed-Size: 900
Maintainer: Alban Douillet <adouillet@nvidia.com>
Description: OpenCV4Tegra
Python bindings for Tegra optimized Open Source Computer Vision Library