# Ubuntu install c++ version of OpenCV + opencv_contrib
* simple install OpenCV (不能指定版本-->不推薦)
```bash
sudo apt-get install libopencv-dev
```
* install dependency package
```bash
sudo apt-get install gcc g++ cmake pkg-config build-essential
sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff5-dev libswscale-dev libjasper-dev
```
* download the opencv package (use 3.4 version)
```bash
cd ~
git clone https://github.com/opencv/opencv.git
```
* configure OpenCV
```bash
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..
```
* make OpenCV
```bash
make -j4
sudo make install
```
* configure pkg-config
```bash
sudo vim /etc/ld.so.conf
加入: /usr/local/lib
sudo ldconfig -v
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
```
* check opencv version
```bash
pkg-config --modversion opencv4
```
* configure opencv_contrib
```bash
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.5/modules ..
```
* make opencv_contrib
```bash
make -j4
sudo make install
```
___
* libopencv_core.so.3.4: cannot open shared object file: No such file or directory
```bash
sudo find / -name "libopencv_core.so.3.4"
sudo vim /etc/ld.so.conf.d/opencv.conf
加入: /usr/local/lib or /usr/local/lib/x86_64-linux-gnu
sudo ldconfig -v
```
___
* sample code
```cpp=
#include <opencv2/highgui.hpp>
#include <iostream>
int main( int argc, char** argv )
{
cv::Mat image;
image = cv::imread("lena.jpg",cv::IMREAD_COLOR);
if(! image.data)
{
std::cout<<"Could not open file" << std::endl;
return -1;
}
cv::namedWindow("lena", cv::WINDOW_AUTOSIZE);
cv::imshow("lena", image);
cv::waitKey(0);
return 0;
}
```
___
* Reference
https://hackmd.io/@xpg109/H1wZiRUNF
https://bbs.huaweicloud.com/blogs/375024
https://blog.csdn.net/weixin_37950717/article/details/125222006
https://blog.csdn.net/DSK_981029/article/details/111143231
https://blog.csdn.net/jiexijihe945/article/details/126163341