vscode ubuntu编译配置opencv源码

9 篇文章 0 订阅
5 篇文章 0 订阅

        编译opencv源码主要是为了用于调试C++等程序,而python只需要通过pip安装即可。本文主要介绍CPU版本编译。CUDA版本opencv请参考文末的参考文献[1]。

1、opencv源码下载

        下载地址为Releases · opencv/opencv · GitHubhttps://github.com/opencv/opencv/releases),可根据需要下载对应版本压缩包。

2、cmake安装

 (1)安装编译所需的依赖包:
sudo apt update
sudo apt install build-essential libssl-dev
(2)下载CMake的源代码。访问[CMake官网](https://cmake.org/files/)下载指定版本的源码压缩包。
wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz
(3)解压源代码包,并进入解压后的目录
tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0
(4)编译和安装:
./configure
make
sudo make install
(5)验证安装
cmake --version

2 、依赖安装

sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev

3、解压编译

unzip opencv-4.1.0.zip
cd opencv-4.1.0
mkdir build
cd build/
cmake -BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON ..;
cd UILD_TYPE\=Release/
make install

4、安装结果验证

        (1)查看版本号

pkg-config --modversion opencv4

        (2)lib库

        安装完成后,opencv lib库路径默认为

/usr/local/lib

   

        (3)包含目录include

        默认为:

/usr/local/include/opencv4

5、CMakeLists.txt配置

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/include
    /usr/local/include
    /usr/include/
    /usr/local/include/opencv4
)
 
# OPENCV
set(
  OPENCV_LIB_DIRS
  /usr/local/lib
)
file(GLOB OPENCV_LIB_FILES ${OPENCV_LIB_DIRS}/libopencv*)
message("OPENCV_LIB_FILES ${OPENCV_LIB_FILES}")
target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENCV_LIB_FILES})

6、c_cpp_properties.json配置

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include/opencv4"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

7、C++示例程序

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;

int main(int argc, char* argv[]) {
    const char* imagename = "/root/project/helloworld/xxx.png";//此处为的图片路径
    //从文件中读入图像
    cv::Mat img = cv::imread(imagename, 1);
    //如果读入图像失败
    if (img.empty()) {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    }
    // cv::imshow("image", img); //显示图像
    // cv::waitKey();
     // 获取图像尺寸信息
    int imageWidth = img.cols;
    int imageHeight = img.rows;
    
    // 输出图像尺寸信息
    printf("Image width: %d\n", imageWidth);
    printf("Image height: %d\n", imageHeight);
    return 0;
}

8、opencv contrib

        诸如SIFT特征匹配算法需要安装opencv contrib,否则可能会报错“fatal error: opencv2/xfeatures2d.hpp: No such file or directory”。

fatal error: opencv2/xfeatures2d.hpp: No such file or directory

        opencv contrib各个版本下载地址为Tags · opencv/opencv_contrib · GitHubhttps://github.com/opencv/opencv_contrib/tags),编译安装方式如下所示。4.1.0版本下载地址为https://github.com/opencv/opencv_contrib/releases/tag/4.1.0。cmake参数中需要加入“ -D OPENCV_ENABLE_NONFREE”,否则会报错“sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'”。编译之前需要重新创建build文件夹后再进行编译,否则问题仍然可能存在。

# 最好将上面opencv编译的build文件夹删除,重新创建
# 这里编译仍然是在上面opencv文件夹下进行的,而不是在opencv contrib文件夹下
# 实际上仍然是编译opencv,只是通过OPENCV_EXTRA_MODULES_PATH将opencv contrib中的内容关联过来
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.1.0.zip
unzip 4.1.0.zip #假设解压后目录为/root/opencv_contrib-4.1.0
rm -r build
cd <上文opencv解压文件夹>
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_ENABLE_NONFREE:BOOL=ON -D OPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib-4.1.0/modules/ ..
sudo make -j8
sudo make install
sudo ldconfig

9、参考文献

[1] https://zhuanlan.zhihu.com/p/363035298?utm_id=0

[2] https://blog.csdn.net/AcetylcholineACh/article/details/129826710

[3] https://blog.csdn.net/AcetylcholineACh/article/details/129826710

更多python技巧、三维算法、算法总结、大模型请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值