opencv交叉编译包含ffmpeg

使用opencv的api打开视频或者视频流,需要ffmpeg的支持(或者其他的方式,不太清楚),在交叉编译的时候需要ffmpeg的支持;

编译ffmpeg+libh264链接

opencv中文api手册

opencv编译

arm移植参考

更好的参考

编译完ffmpeg后,假设是安装在/home/cp/out_arm下,

解压opencv源码,我的是opencv-4.5.1.tar.gz

tar -xvf opencv-4.5.1.tar.gz
cd opencv-4.5.1/
mkdir test_arm
cd test_arm/

配置cmake环境;

先导一下pkg的环境;

export PKG_CONFIG_PATH=/home/cp/out_arm/lib/pkgconfig

然后启动cmake gui

cmake-gui ..

点击configure(左边),选择指定编译选项;

下面的Target Root那里一定要指定第三方库的安装目录,其他都是指定编译工具的路径,可以按你自己的路径指定就好了;

然后点击finish;再添加OPENCV_ENABLE_PKG_CONFIG变量,设置为true;

点击configure就能看到,ffmpeg模块已经都是yse了;

编译的过程中,会出现的一些问题;

问题:

编译的过程遇到找不到png/jpeg的库的话,可以使用内部的;

勾选如下(举例jpeg):

gtk和gstreamer不需要都可以先关掉;

问题:

在最下面找到所在目录修改link.txt文件

在指定位置添加 -Wl,-rpath,/home/cp/out_arm/lib,其中/home/cp/out_arm/lib是库的安装路径;

参考博客

下面是自己编译过程中的记录,可以参考,但是可能有些是不对的;

要链接ffmpeg库的话,指定ffmpeg安装路径
步骤1
导pkg路径

export PKG_CONFIG_PATH=/home/cp/out_arm/lib/pkgconfig

步骤2
cmake-gui中指定OPENCV_ENABLE_PKG_CONFIG为ture,没有的话添加。

关闭了 gtk gstreamer

重要一点:

CMAKE_FIND_ROOT_PATH “/usr/local/arm/opencv-depend”

CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER

CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY

CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY

CMAKE_FIND_ROOT_PATH 可以指定其他第三方库的安装路径,opencv在编译的时候就能找到相应的库;

CMAKE_INSTALL_PREFIX 指定编译结果的安装目录;

测试opencv显示一张图片

#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    IplImage* image = cvLoadImage("/root/Desktop/miska.jpg");
    if(image == NULL)
    {
        cout<<"loud image fail"<<endl;
        return -1;
    }

    cvNamedWindow("src", 1);
    cvShowImage("src", image);
    cvWaitKey();
    
    cvDestroyWindow("src");
    cvReleaseImage(&image);
 
    return 0;
}

原文 opencv交叉编译包含ffmpeg_ffmpeg opencv交叉编译_思而后行之的博客-CSDN博客

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

猜你喜欢

转载自blog.csdn.net/yinshipin007/article/details/131464764