【opencv】1.opencv安装、编译、运行等踩坑记录
1.安裝python2環境下opencv2.4.9安裝不成功的解決方法
2.查看linux下的各種安裝庫的安裝位置和版本,以opencv為例
3.cmake與g++: opencv之在Linux下編譯 opencv 程序的兩種方式
4.安裝Python版opencv使用國內鏡像下載方法
5.python3中無法import cv2,importError
1.安裝python2環境下opencv2.4.9安裝不成功的解決方法
由于之前安裝過opencv3.xx版本,在安裝python2環境下opencv2.4.9時候會出錯,安裝不成功。
解決方法:
進入python2,然后:
cv2.__file__查看CV2模塊的路徑,會得到類似于"/usr/lib/python2.7/dist-packages/cv2.x86_64-linux-gnu.so"的文件,
把該.so文件刪除之后,再使用Ubuntu默認倉庫中的OpenCV來安裝:sudo apt-get install python-opencv,就會自動安裝2.4.9版本的opencv(由于Ubuntu默認倉庫版本舊,不支持Python3,所以安裝的是2.4.9而不是opencv3.x.x)。
并且只影響python2環境下的cv2版本,python2環境下的opencv版本變為了2.4.9,python3環境下的opencv版本依然是3.4.0。
2.查看linux下的各種安裝庫的安裝位置和版本,以opencv為例
參考:https://blog.csdn.net/zhenguo26/article/details/79627232
pkg-config 是一個查詢 通過源碼編譯安裝 的第三方庫的工具。
查看linux下的opencv安裝庫:
查看linux下的opencv安裝版本,也可以用來查看別的庫的版本,不限于opencv:
pkg-config opencv --modversion 或者 pkg-config --modversion opencv查看linux下的opencv安裝路徑:
sudo find / -iname "*opencv*"在全盤上不區分大小寫,搜索帶有關鍵字opencv的所有文件及文件夾都會輸出到終端,如果輸出太長建議輸出到txt文件里查看,如下:
sudo find / -iname "*opencv*" > /home/ubuntu/Desktop/opencv_find.txt3.cmake與g++: opencv之在Linux下編譯opencv程序的兩種方式
參考:https://blog.csdn.net/keith_bb/article/details/52864851
// test.cc #include <iostream> #include <opencv2/opencv.hpp> //無論opencv2還是opencv3,他們的頭文件都是這樣包含using namespace std; using namespace cv;int main() {Mat srcImage = imread("lena.jpg");imshow("源圖像",srcImage);waitKey(0);return 0; }(1)g++編譯
g++ test.cc -o test ##### 如果源碼不包含第三方庫,這句話會生成一個可執行文件./test,但是由于頭文件使用了第三方庫opencv庫,因此執行這句話會出錯;其中test.cc是要編譯的文件名稱,生成的可執行文件取名為test,如果編譯多個cpp或cc文件,可用如下方法:
比如在test.cc代碼中使用到了(在hello.h聲明)在hello.cc中實現的函數,(test.cc中也包含了hello.h頭文件),那么可以這么編譯:
上面這句話會生成一個可執行文件./test,但是由于頭文件使用了第三方庫opencv庫,所以直接這么編譯會出錯,需要使用
g++ `pkg-config opencv --cflags` test.cc -o test `pkg-config opencv --libs` //一定要嚴格遵照這樣的順序寫然后就可以使用 ./test來運行程序了。對于需要輸入命令行參數的,其形式類似與 ./test arg1 arg2
(2)使用cmake編譯OpenCV文件
可以參考下面這兩個博客來了解 cmake 的完整用法
https://www.hahack.com/codes/cmake/
http://www.renlei.co/article/182.html
首先確保已經安裝了cmake,然后建立一個CMakeLists.txt文件,CMakeLists.txt文件中的具體內容如下(注:CMakeLists.txt文件你可以到你的OpenCV源代碼解壓出來的文件夾下的opencv-2版本的/samples/c/example_cmake/或者opencv-3版本的/samples/cpp/example_cmake/文件夾下拷過來,然后再做修改):
PROJECT(Example) //這是建立一個工程項目(類似于我們VS中建立C++項目一樣),括號里面時工程名,工程名我們可以任意給,最后程序編譯出來的可執行文件就是這個名字CMAKE_MINIMUM_REQUIRED(VERSION 2.6) //這是對CMake工具最低版本要求,這里我們要檢查下我們的CMake工具的版本信息,我們可以使用命令“cmake --version”查看 if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy)FIND_PACKAGE( OpenCV REQUIRED ) //這是cmake用來查找opencv包用的,不用改# Declare the target (an executable) ADD_EXECUTABLE(Example Image_show.c) //這里括號里面的兩個參數分別是工程項目名和我們要編譯文件名的意思,記住中間一空格鍵隔開TARGET_LINK_LIBRARIES(Example ${OpenCV_LIBS}) //這是我們鏈接到OpenCV庫的環節,我們只要更改前面第一個參數位我們的工程項目名即可#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}") //好了,就修改這么點東西,保存,關閉。更簡短的版本可以看下面這個,都一樣:
cmake_minimum_required(VERSION 2.8) project(可執行文件名稱) find_package(OpenCV REQUIRED) add_executable(可執行文件名稱 源文件.cc) target_link_libraries(可執行文件名稱 ${OpenCV_LIBS})project()括號里面填寫要生成的可執行文件名稱,add_executable()及target_link_libraries()也一樣。接下來執行:
cmake . make ./可執行文件名4.安裝Python版opencv使用國內鏡像下載方法
Python pip用國內鏡像下載的辦法及import cv2
原文地址:http://blog.csdn.net/u010536377/article/details/50564185
一直想在Ubuntu安裝opencv,結果各種出錯,現在有一個最簡單的辦法:
sudo pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ opencv-contrib-python問題搞定。尤其是提示了問題ReadTimeoutError: HTTPSConnectionPool(host=‘pypi.python.org’, port=443): Read timed out.后,用國內鏡像下載分分鐘搞定。
5.python3中無法import cv2,importError
python3中無法import cv2,出現以下情況
importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so解決辦法:在你運行出錯的那個Python文件中,在import sys之后,import cv2之前,加上一句sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
如果不能解決,更詳細方案可參考 https://blog.csdn.net/shaoyou223/article/details/82862051
總結
以上是生活随笔為你收集整理的【opencv】1.opencv安装、编译、运行等踩坑记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【c++】0.C++笔记
- 下一篇: 【c++】1.const和constex