日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

opencv安装-3.4.6(+opencv_contrib;环境:ubuntu1604-NVIDIA-已装cuda)

發布時間:2024/5/14 Ubuntu 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv安装-3.4.6(+opencv_contrib;环境:ubuntu1604-NVIDIA-已装cuda) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝opencv3.4.6,在github/opencv沒找到wiki,參考了一些博客。過程中遇到一些問題,在此做一下記錄。


參考博客:

https://blog.csdn.net/tutengcsdn/article/details/90346709

https://blog.csdn.net/weixin_42106049/article/details/102093424? #安裝過程跟著這個做

解決錯誤參考:

https://blog.csdn.net/qq_33475105/article/details/82819850

https://answers.opencv.org/question/7666/build-failure-244-unsupportedeigenmatrixfunctions/

https://blog.csdn.net/weixin_44152895/article/details/102882502

一、下載opencv源碼、opencv_contrib源碼

github上下載,太慢了,就用gitee下載。記得用終端git clone 下載,不然沒法git checkout選擇版本。

二、編譯安裝

參考https://blog.csdn.net/weixin_42106049/article/details/102093424? #安裝過程跟著這個做

三、遇到的問題

make的時候:

問題一:opencv2/xfeatures2d/cuda.hpp: 沒有那個文件或目錄

/home/gyh/opencv_source/opencv/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:101: fatal error: opencv2/xfeatures2d/cuda.hpp: 沒有那個文件或目錄

解決方法總結在前面

  • 找到下面這個文件
~/opencv_source/opencv/modules/stitching/Cmakelists.txt

在里面添加下面一行;一定要添加set(STITCHING_CONTRIB_DEPS "opencv_xfeatures2d")前面。

INCLUDE_DIRECTORIES("~/opencv_source/opencv_contrib/modules/xfeatures2d/include")
  • 根據報錯提示找到?matchers.hpp,將其中的“opencv2/xfeatures2d/cuda.hpp”的引用改為絕對路徑。
#ifndef OPENCV_STITCHING_MATCHERS_HPP #define OPENCV_STITCHING_MATCHERS_HPP#include "opencv2/core.hpp" #include "opencv2/features2d.hpp"#include "opencv2/opencv_modules.hpp"#ifdef HAVE_OPENCV_XFEATURES2D //# include "opencv2/xfeatures2d/cuda.hpp" # include "/home/gyh/opencv_source/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp" #endif

經歷的整個過程記錄:

這個問題很奇怪,說的是在一些文件中,#include“matchers.hpp”時出錯,出錯的原因是matchers.hpp中沒有“opencv2/xfeatures2d/cuda.hpp”這個文件。找到matchers.hpp打開,看到其中確實引用了這個“opencv2/xfeatures2d/cuda.hpp”

#ifndef OPENCV_STITCHING_MATCHERS_HPP #define OPENCV_STITCHING_MATCHERS_HPP#include "opencv2/core.hpp" #include "opencv2/features2d.hpp"#include "opencv2/opencv_modules.hpp"#ifdef HAVE_OPENCV_XFEATURES2D # include "opencv2/xfeatures2d/cuda.hpp" #endif

?百度之后,都說這個錯誤是因為添加了opencv_contrib這個擴展模塊庫(extra_modules_lib),才導致的編譯錯誤。

“opencv2/xfeatures2d/cuda.hpp”這個文件就是opencv_contrib中的(這是從哪看出來的,我也沒搞懂),路徑為:

~/opencv_source/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp

這個文件是存在的,只是編譯的時候找不到,只要想辦法讓他能找到就好了。

但奇怪的是,這個錯誤在編譯過程中反復出現,解決了一個,沒問題了,后面編譯到別的功能包時,依然還出現,很奇怪。

第一次:報錯信息如圖

解決方法:改Cmakelists.txt,加東西。

根據錯誤提示,都是在編譯opencv/modules/stetching時,產生的錯誤。

故按照路徑找到這個包,找到他的Cmakelists.txt,路徑為:

~/opencv_source/opencv/modules/stitching/Cmakelists.txt

在他的Cmakelists.txt中添加:

INCLUDE_DIRECTORIES("~/opencv_source/opencv_contrib/modules/xfeatures2d/include")

?一定要添加set(STITCHING_CONTRIB_DEPS "opencv_xfeatures2d")前面,否則就會遇到第二次錯誤。。。

第二次

解決方法:改Cmakelists.txt 中添加的位置。

INCLUDE_DIRECTORIES("~/opencv_source/opencv_contrib/modules/xfeatures2d/include")

?一定要添加set(STITCHING_CONTRIB_DEPS "opencv_xfeatures2d")前面

第三次

按理說經過前兩次之后,應該是沒問題了,但還是太天真了。。。編譯到最后他又出錯了

如上圖,這次又多了個opencv/modules/python包找不到“opencv2/xfeatures2d/cuda.hpp”

解決方法:改matchers.hpp中的include為絕對路徑,同時刪掉Cmakelists.txt加的東西。

根據上圖錯誤提示的路徑找到matchers.hpp,把“opencv2/xfeatures2d/cuda.hpp”的引用改為絕對路徑。

#ifndef OPENCV_STITCHING_MATCHERS_HPP #define OPENCV_STITCHING_MATCHERS_HPP#include "opencv2/core.hpp" #include "opencv2/features2d.hpp"#include "opencv2/opencv_modules.hpp"#ifdef HAVE_OPENCV_XFEATURES2D # include "/home/gyh/opencv_source/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp" #endif

?為啥還要把Cmakelists.txt里添加的INCLUDE_DIRECTORYS刪掉呢?因為我想試試看。按理說這兩個方法都能解決找不到依賴的情況,但是為啥添加INCLUDE_DIRECTORYS之后還有找不到的情況。。。

第四次:啪啪打臉

將matchers.hpp中的“opencv2/xfeatures2d/cuda.hpp”引用改為絕對路徑,去掉Cmakelists.txt里添加的INCLUDE_DIRECTORYS,果然又出錯了,這次是另一個引用了“opencv2/xfeatures2d/cuda.hpp”的precomp.hpp找不到頭文件。解決方法:算了吧,我還是把Cmakelists.txt中的INCLUDE_DIRECTORYS再加回來吧。

其實找到報錯的這個文件precomp.hpp,把他的引用也改成絕對路徑應該也行,不過我沒試,就目前這樣改已經可以解決問題了。

問題二:unsupported/Eigen/MatrixFunctions:沒有那個文件或目錄?

?

?這是又找不到頭文件了...一看是Eigen庫的哪個頭文件找不到,打開這個odomerty.cpp,看看他的引用:

# include <Eigen/Core> # include <unsupported/Eigen/MatrixFunctions> # include <Eigen/Dense>

?其他兩個都找得到,就中間這個找不到。那就去找找這個eigen庫,看看到底有沒有這個文件(前提是你已經裝了eigen庫)

在計算機的/usr/include/里能找到安裝好的eigen庫,可以看到有兩個相關的文件夾,Eigen和eigen3,文件“unsupported/Eigen/MatrixFunctions”在eigen3里,顯然這個#include的路徑不太對,給他改成:

# ?include <eigen3/unsupported/Eigen/MatrixFunctions>

問題三:vgg_generated_120.i:沒有那個文件或目錄,或找不到其他.i文件


?找到這個報錯里的vgg.cpp文件,打開看看,發現里面會選擇性的引用一堆".i"文件,但是這個文件夾里并沒有這些文件。

解決方法:下載相關文件放到這個vgg.cpp所在的文件夾。

在:https://github.com/opencv/opencv_3rdparty/branches/stale?page=1
下載: “contrib_xfeatures2d_vgg_20160317” 和"contrib_xfeatures2d_boostdesc_20161012"兩個分支
并將解壓后的文件中的所有.i文件復制到以下目錄:

~/opencv_source/opencv_contrib/modules/xfeatures2d/src

?

總結

以上是生活随笔為你收集整理的opencv安装-3.4.6(+opencv_contrib;环境:ubuntu1604-NVIDIA-已装cuda)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。