【opencv】1.opencv安装、编译、运行等踩坑记录
1.安裝python2環(huán)境下opencv2.4.9安裝不成功的解決方法
2.查看linux下的各種安裝庫的安裝位置和版本,以opencv為例
3.cmake與g++: opencv之在Linux下編譯 opencv 程序的兩種方式
4.安裝Python版opencv使用國內(nèi)鏡像下載方法
5.python3中無法import cv2,importError
1.安裝python2環(huán)境下opencv2.4.9安裝不成功的解決方法
由于之前安裝過opencv3.xx版本,在安裝python2環(huán)境下opencv2.4.9時(shí)候會(huì)出錯(cuò),安裝不成功。
解決方法:
進(jìn)入python2,然后:
cv2.__file__查看CV2模塊的路徑,會(huì)得到類似于"/usr/lib/python2.7/dist-packages/cv2.x86_64-linux-gnu.so"的文件,
把該.so文件刪除之后,再使用Ubuntu默認(rèn)倉庫中的OpenCV來安裝:sudo apt-get install python-opencv,就會(huì)自動(dòng)安裝2.4.9版本的opencv(由于Ubuntu默認(rèn)倉庫版本舊,不支持Python3,所以安裝的是2.4.9而不是opencv3.x.x)。
并且只影響python2環(huán)境下的cv2版本,python2環(huán)境下的opencv版本變?yōu)榱?.4.9,python3環(huán)境下的opencv版本依然是3.4.0。
2.查看linux下的各種安裝庫的安裝位置和版本,以opencv為例
參考:https://blog.csdn.net/zhenguo26/article/details/79627232
pkg-config 是一個(gè)查詢 通過源碼編譯安裝 的第三方庫的工具。
查看linux下的opencv安裝庫:
查看linux下的opencv安裝版本,也可以用來查看別的庫的版本,不限于opencv:
pkg-config opencv --modversion 或者 pkg-config --modversion opencv查看linux下的opencv安裝路徑:
sudo find / -iname "*opencv*"在全盤上不區(qū)分大小寫,搜索帶有關(guān)鍵字opencv的所有文件及文件夾都會(huì)輸出到終端,如果輸出太長建議輸出到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 ##### 如果源碼不包含第三方庫,這句話會(huì)生成一個(gè)可執(zhí)行文件./test,但是由于頭文件使用了第三方庫opencv庫,因此執(zhí)行這句話會(huì)出錯(cuò);其中test.cc是要編譯的文件名稱,生成的可執(zhí)行文件取名為test,如果編譯多個(gè)cpp或cc文件,可用如下方法:
比如在test.cc代碼中使用到了(在hello.h聲明)在hello.cc中實(shí)現(xiàn)的函數(shù),(test.cc中也包含了hello.h頭文件),那么可以這么編譯:
上面這句話會(huì)生成一個(gè)可執(zhí)行文件./test,但是由于頭文件使用了第三方庫opencv庫,所以直接這么編譯會(huì)出錯(cuò),需要使用
g++ `pkg-config opencv --cflags` test.cc -o test `pkg-config opencv --libs` //一定要嚴(yán)格遵照這樣的順序?qū)?/span>然后就可以使用 ./test來運(yùn)行程序了。對于需要輸入命令行參數(shù)的,其形式類似與 ./test arg1 arg2
(2)使用cmake編譯OpenCV文件
可以參考下面這兩個(gè)博客來了解 cmake 的完整用法
https://www.hahack.com/codes/cmake/
http://www.renlei.co/article/182.html
首先確保已經(jīng)安裝了cmake,然后建立一個(gè)CMakeLists.txt文件,CMakeLists.txt文件中的具體內(nèi)容如下(注:CMakeLists.txt文件你可以到你的OpenCV源代碼解壓出來的文件夾下的opencv-2版本的/samples/c/example_cmake/或者opencv-3版本的/samples/cpp/example_cmake/文件夾下拷過來,然后再做修改):
PROJECT(Example) //這是建立一個(gè)工程項(xiàng)目(類似于我們VS中建立C++項(xiàng)目一樣),括號(hào)里面時(shí)工程名,工程名我們可以任意給,最后程序編譯出來的可執(zhí)行文件就是這個(gè)名字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) //這里括號(hào)里面的兩個(gè)參數(shù)分別是工程項(xiàng)目名和我們要編譯文件名的意思,記住中間一空格鍵隔開TARGET_LINK_LIBRARIES(Example ${OpenCV_LIBS}) //這是我們鏈接到OpenCV庫的環(huán)節(jié),我們只要更改前面第一個(gè)參數(shù)位我們的工程項(xiàng)目名即可#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}") //好了,就修改這么點(diǎn)東西,保存,關(guān)閉。更簡短的版本可以看下面這個(gè),都一樣:
cmake_minimum_required(VERSION 2.8) project(可執(zhí)行文件名稱) find_package(OpenCV REQUIRED) add_executable(可執(zhí)行文件名稱 源文件.cc) target_link_libraries(可執(zhí)行文件名稱 ${OpenCV_LIBS})project()括號(hào)里面填寫要生成的可執(zhí)行文件名稱,add_executable()及target_link_libraries()也一樣。接下來執(zhí)行:
cmake . make ./可執(zhí)行文件名4.安裝Python版opencv使用國內(nèi)鏡像下載方法
Python pip用國內(nèi)鏡像下載的辦法及import cv2
原文地址:http://blog.csdn.net/u010536377/article/details/50564185
一直想在Ubuntu安裝opencv,結(jié)果各種出錯(cuò),現(xiàn)在有一個(gè)最簡單的辦法:
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.后,用國內(nèi)鏡像下載分分鐘搞定。
5.python3中無法import cv2,importError
python3中無法import cv2,出現(xiàn)以下情況
importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so解決辦法:在你運(yùn)行出錯(cuò)的那個(gè)Python文件中,在import sys之后,import cv2之前,加上一句sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
如果不能解決,更詳細(xì)方案可參考 https://blog.csdn.net/shaoyou223/article/details/82862051
總結(jié)
以上是生活随笔為你收集整理的【opencv】1.opencv安装、编译、运行等踩坑记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【c++】0.C++笔记
- 下一篇: 【c++】1.const和constex