【opencv安裝】在TX2上如何卸載並安裝opencv


前言

博主想要TX2上使用opencv中的viz模塊,需要安裝opencv_contrib,目前TX2的opencv版本是刷機的時候安裝的opencv3.3.1,需要先卸載,再安裝。后來發現opencv3.3.1版本中本含有viz模塊,只是更高版本的opencv中viz模塊是在opencv_contirb中。

步驟

 1. 卸載TX2刷機的opencv版本;

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

2. 安裝帶有viz模塊的opencv3.3.1版本;

2.1. 安裝opencv的依賴庫,必須在安裝opencv之前安裝好;

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

viz模塊

sudo apt-get install libvtk5-dev

2.2. 下載源碼並解壓,包括opencv-3.3.1和opencv_contrib-3.3.1,從github下載,注意兩者的版本必須要一致;

/opt$ sudo unzip opencv-3.3.1.zip opencv_contrib-3.3.1.zip
/opt$cd opencv-3.3.1
/opt/opencv-3.3.1$sudo mv ../opencv_contrib-3.3.1 ./
/opt/opencv-3.3.1$sudo mkdir build
/opt/opencv-3.3.1$cd build

2.3. 編譯安裝

/opt/opencv-3.3.1/build$ sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.3.1/modules/ -D WITH_VTK=ON .. 
/opt/opencv-3.3.1/build$sudo make -j8(wait long time/opt/opencv-3.3.1/build$sudo make install

其中,

-D WITH_VTK=ON

是關於viz模塊的;

問題:cmake的時候正常,make的時候出錯,顯著性的錯誤如下:

xfeatures2d/boostdesc: Download failed: 7;"Couldn't connect to server"

and

/opt/opencv-3.3.1/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
compilation terminated.

解決方法(參考herehere):

step1:

Github上有網友指出是因為OpenCVDownload.cmake在日志記錄功能中出現問題,找到文件

~/opencv-3.3.1/cmake/OpenCVDownload.cmake

將以下代碼

  macro(ocv_download_log)
    file(APPEND "${OPENCV_DOWNLOAD_LOG}" "${ARGN}\n")
  endmacro()

修改成

  function(ocv_download_log)
    file(APPEND "${OPENCV_DOWNLOAD_LOG}" "${ARGN}\n")
  endfunction()

 step2:

 cmake命令添加以下內容:

cmake -D BUILD_opencv_xfeatures2d=OFF

 還有說HTTP的安裝需要某個版本的cmake(博主沒有進行這個問題的操作,具體可參考github的issue),其他的原因有可能是內存空間不足等。

問題

/opt/opencv-3.3.1/modules/cudacodec/src/precomp.hpp:60:37: fatal error: dynlink_nvcuvid.h: No such file or directory
compilation terminated.

原因:這個問題與系統是否安裝CUDA、安裝CUDA的版本有關,可以使用-D WITH_CUDA=OFF解決該問題;

make這一步驟完成,build目錄占了差不多11G的空間,不清楚build目錄能否刪除,只安裝opencv而不安裝contrib則build差不多3G的空間。

 3. 測試opencv和viz模塊;

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_COMPILER "g++")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
list(APPEND CMAKE_CXX_FLAGS "-O3 -DEBUG -ffast-math -Wall -pthread -fopenmp -std=c++11") #-DNDEBUG
project(test_viz)
# OpenCV
find_package(OpenCV 3.3.1 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# message("OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
# message("OpenCV_LIBS: ${OpenCV_LIBS}")
# VTK
find_package(VTK 5.10 REQUIRED)
include(${VTK_USE_FILE})
# message("VTK_USE_FILE: ${VTK_USE_FILE}")
# message("VTK_LIBRARIES: ${VTK_LIBRARIES}")
# PROJECT
include_directories(include)
aux_source_directory(src DIR_SRCS)
add_executable(${PROJECT_NAME} ${DIR_SRCS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} ${VTK_LIBRARIES})

test_code(可以參考github_viz_samples運行各個demo):

#include <iostream>
#include <opencv2/viz.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/calib3d.hpp>

using namespace std;
using namespace cv;

int main()
{
  viz::Viz3d window("window");
  window.showWidget("Coordinate", viz::WCoordinateSystem());

  viz::WPlane plane(Size2d(2,2), viz::Color::white());
  plane.setRenderingProperty(viz::LINE_WIDTH, 5);
  plane.setPose(Affine3f());
  window.showWidget("plane", plane);

  Mat rvec = Mat::zeros(1, 3, CV_32F);
  while(!window.wasStopped())
  {
    rvec.at<float>(0,0) = 0.f;
    rvec.at<float>(0,1) += CV_PI*0.01f;
    rvec.at<float>(0,2) = 0.f;
    Mat rmat;
    Rodrigues(rvec, rmat);
    Affine3f pose(rmat, Vec3f(0,0,0));
    window.setWidgetPose("plane", pose);
    window.spinOnce(1, true);
  }
}

其中,可能會用一些已有的文件,比如bunny.ply,編譯之后所在目錄為:

/opt/opencv-3.3.1/samples/cpp/tutorial_code/viz/

后記

可以正常使用opencv viz模塊之后,博主想使用之前安裝的PCL開源庫,發現PCL不能正常使用,不能find PCL的配置文件,可能是安裝的時候有沖突,比如VTK;

參考

1. Jetson TX2 卸載並安裝OpenCV3.4.0

2. linux系統卸載opencv

3. linux系統opencv以及opencv_contrib的安裝與使用

4. opencv_installation_on_linux;

5. github_viz_samples;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM