安裝cmake
依賴openssl
sudo apt-get install libssl-dev
安裝
解壓進入cmake安裝目錄,執行
./configure
make
make install
編譯opencv3.4.10
下載opencv3.4.10,下載地址:https://opencv.org/releases/
安裝qt
sudo apt-get install libqt4-dev
在用apt-get安裝軟件包的時候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)問題,請參考:
解決apt-get安裝中的returned an error code
unzip解壓opencv源代碼
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON ..
使用qt的配置文件
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON WITH_QT=ON ..
不使用opencl的版本
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -DWITH_OPENCL=OFF -DWITH_OPENCL_SVM=OFF ..
cmake的時候可能會遇到,下載IPPICV
IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
如果沒有vpn,那麼請參考如下:
源碼編譯opencv卡在IPPICV: Download: ippicv_2017u3_lnx_intel64_general_20170822.tgz解決辦法
我是把聯網關掉,就不需要下載IPPICV了
需要確定g++的版本爲4.8或者以上
先把gcc和g++的版本更改爲4.8
sudo mv gcc gcc.bak
sudo ln -s gcc-4.8 gcc
gcc -v
sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++
g++ -v
編譯完成後,換到gcc4.4的版本(gcc4.4對把ffmpeg.c變爲ffmpeg.cpp十分重要)
sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
sudo mv g++ g++.bak
sudo ln -s g++-4.4 g++
如果需要使用xfeatures2d等opencv_contrib擴展,則需要從這裏下載(注意對應版本,tag要留意一下):https://github.com/opencv/opencv_contrib/tree/3.4.10
然後解壓目錄到opencv主目錄中
這時候使用的cmake命令如下
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D WITH_OPENGL=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.10/modules -DOPENCV_ENABLE_NONFREE=ON ..
中間需要下載對應模塊
測試在eclipse中使用opencv
當然如果只是測試在eclipse中使用opencv,則直接可以安裝包
sudo apt-get install libopencv-dev
這是用apt安裝後so存放的位置
include paths中填入如下內容
/usr/include/
/usr/include/opencv
/usr/include/opencv2
庫搜索路徑如下
/usr/lib/x86_64-linux-gnu
需要引入的庫爲
opencv_imgproc
opencv_highgui
opencv_core
如果出現找不到庫,則在/etc/ld.so.conf.d目錄下新建一個opencv.conf文件並將其內容寫入剛纔找到的庫的路徑
cd /etc/ld.so.conf.d
sudo vi opencv.conf
在opencv.conf中添加如下內容
/usr/local/lib
/home/zeng/ffmpeg/opencv-3.4.10/build/lib
保存後執行
sudo ldconfig
運行一個測試程序
#include "use_opencv.h"
#include <iostream>
using namespace std;
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/types_c.h>
using namespace cv;//使用命名空間
void test_opencv(char* img_path)
{
cout << "hello opencv2222." << endl;
Mat img = imread(img_path, 0); // 讀取圖片 這裏文件地址寫成你想打開的文件的地址或者放在執行目錄裏就不用寫路徑直接使用文件名字
imshow("load image",img);//在窗口中打開圖片
waitKey(100000);//等待時間,這裏等待時間最好別填零,要不打開的窗口秒退
}
int main()
{
char *img_path = "/home/zeng/ffmpeg/ffmpeg-4.2.2/1.jpg";
test_opencv(img_path);
return 0;
}
看到的結果如下