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 ..

opencv交叉编译包含ffmpeg_第1张图片
点击configure(左边),选择指定编译选项;
opencv交叉编译包含ffmpeg_第2张图片
下面的Target Root那里一定要指定第三方库的安装目录,其他都是指定编译工具的路径,可以按你自己的路径指定就好了;
opencv交叉编译包含ffmpeg_第3张图片
然后点击finish;再添加OPENCV_ENABLE_PKG_CONFIG变量,设置为true;
opencv交叉编译包含ffmpeg_第4张图片

点击configure就能看到,ffmpeg模块已经都是yse了;
opencv交叉编译包含ffmpeg_第5张图片
编译的过程中,会出现的一些问题;
问题:
编译的过程遇到找不到png/jpeg的库的话,可以使用内部的;
勾选如下(举例jpeg):
opencv交叉编译包含ffmpeg_第6张图片
gtk和gstreamer不需要都可以先关掉;
opencv交叉编译包含ffmpeg_第7张图片

问题:
在这里插入图片描述
在最下面找到所在目录修改link.txt文件
opencv交叉编译包含ffmpeg_第8张图片
在指定位置添加 -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 
#include 
#include 

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)