编译安装opencv

最近开始学习opencv,首先就要在我的fedora系统上编译安装opencv。下面记录安装过程:
1.下载opencv源码,这个可以从github上下载,我下载的版本是3.4.1.
命令为 git clone git@github.com:opencv/opencv.git 就可以下载到最新的版本。也可以下载他的tar打包文件自己解压安装。
2.安装依赖库
因为opencv依赖很多其他的第三方库,所以需要先安装这些依赖库,依赖库比较多,比较耗时。大部分依赖库都可以使用sudo dnf install lib-name.如果找不到的,可以上https://pkgs.org/这个网站来搜索,这个网站非常好用和全面,基本需要的库都能找到。
a. 安装编译环境
sudo dnf install ncurses-devel cmake
这些是编译所需要的环境,因为opencv是基于cmake组织的,所以需要安装cmake。ncurses是字符终端的处理库,一般系统都已经安装。如果没有安装,可以用dnf install ncurses-devel 命令来安装。
b. 安装gtk+2.x
sudo dnf install gtk2 gtk2-devel gtk2-devel-docs
sudo dnf install libgnome-devel gnome-devel-docs
sudo dnf install zlib glib atk pango gdk-pixbuf2 gdk-pixbuf2-devel
gtk是一套跨平台的图形开发组件,opencv要利用gtk的一些图像库。
c. 安装依赖的包
sudo dnf install gtk+ gtk2-devel pkgconfig python-devel python-numpydoc
sudo dnf install libavc1394 libavc1394-devel libdc1394 libdc1394-devel jasper-devel
sudo dnf install ffmpeg ffmpeg-devel openjpeg-devel libjpeg-devel libpng-devel libtiff-devel
其中ffmpeg的安装也是需要一些功夫的,具体可以搜索ffmpeg的编译安装步骤。注意,安装ffmpeg的时候需要动态编译,也就是编译成动态库,这样便于opencv动态链接使用,所以需要./configure –disable-static –enable-shared
当编译的时候,会报告libavcodec/mqc.o: relocation r_x86_64_32 against `.rodata’ can not be used when making a shared object; recompile with -fpic,这说明libavcodec里面的Makefile的cflags没有-fPIC,所以,进入libavcodec,修改其Makefile,在cflags后面加上-fPIC, 然后重新编译。

3.以上这些安装完成后,就可以编译opencv了.
在opencv目录下创建release目录,进入该目录,在该目录下编译。
cd release
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PYTHON_SUPPORT=ON
make -j4
sudo make install
由于 我的本机是x86-64,所以opencv的库默认安装到/usr/local/lib64目录下,头文件放在/usr/local/include/opencv和opencv2目录下。
到这里,我们的opencv就编译安装完成了。我们可以写一个test程序来验证一下

#include “opencv2/core.hpp”
#include "opencv2/highgui.cpp"
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
    Mat src_image = imread(argv[1]);
    if (src_image.empty()) {
        cout<<"imread error"<<endl;
        return -1;
    } else {
        cout<<"read success"<<endl;
    }
    namedWindow(argv[1], WINDOW_AUTOSIZE);
    imshow(argv[1], src_image);
    waitKey(0);
    return 0;
}

然后进行编译,文件名字为opencv_hello_world.cpp
g++ -I/usr/local/include opencv_hello_world.cpp -o opencv_hello_world -L/usr/local/lib64 -lopencv_world
注意-I是编译参数,放在前面,-L等是链接参数,放在后面。
然后运行
./opencv_hello_world xx.jpg
当运行时,我们会发现,找不到libopencv_world.so这个库,但是我们看/usr/local/lib64下,是有这个库的,用ldd opencv_hello_world也会发现找不到这个库。也许我们会疑惑,为什么编译的时候指定了-L,但为什么找不到呢。这是因为-L只有链接的时候起作用,没有写进二进制文件中。所以运行的时候找不到。
这个问题的原因是/usr/local/lib64不是默认的搜索路径,我们看环境变量LD_LIBRARY_PATH,里面只有/usr/local/lib这个目录,这是我们可以在该环境变量中加入/usr/local/lib64, 但为了更通用,我们可以编译的时候设置rpath, rpath是写进可执行elf文件的,所以我们编译的命令可以改为:
g++ -I/usr/local/include opencv_hello_world.cpp -o opencv_hello_world -L/usr/local/lib64 -lopencv_world -Wl,-R/usr/local/lib64 -R就是设置rpath变量的。这时再测试上面的test程序,就可以成功运行起来了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在介绍pip编译安装OpenCV之前,我需要先说明一下,pip是Python的包管理工具,而OpenCV是一个开源的计算机视觉库。通常情况下,我们使用pip来安装Python包,而不是编译安装。 如果你想使用pip来安装OpenCV,可以直接运行以下命令: ``` pip install opencv-python ``` 这将会自动下载并安装最新版本的OpenCV。 如果你需要编译安装OpenCV,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了CMake和GCC编译器。你可以通过运行以下命令来检查它们是否已经安装: ``` cmake --version gcc --version ``` 2. 下载OpenCV的源代码。你可以从OpenCV官方网站(https://opencv.org/releases/)下载最新版本的源代码。 3. 解压下载的源代码文件,并进入解压后的目录。 4. 创建一个用于编译的目录,并进入该目录: ``` mkdir build cd build ``` 5. 运行CMake来配置编译过程。你可以根据自己的需求添加一些选项,例如指定安装路径等。以下是一个示例命令: ``` cmake .. ``` 6. 运行make命令进行编译: ``` make ``` 这个过程可能需要一些时间,取决于你的计算机性能。 7. 完成编译后,运行make install命令进行安装: ``` make install ``` 8. 安装完成后,你可以通过导入cv2模块来验证OpenCV是否成功安装: ``` import cv2 print(cv2.__version__) ``` 如果能够成功导入cv2模块并打印出版本号,说明OpenCV已经成功安装。 希望以上步骤对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值