opencv - Yocto:cmake 缺少 header - 如何依赖开发包?

标签 opencv ffmpeg yocto bitbake

我包括opencv在我的 Yocto 图像中使用自定义构建参数。为此,我有一个 opencv_4.1.0.bbappend配方,我在其中设置自定义选项,特别是 FFMPEG .食谱是这样的:

DEPENDS += "ffmpeg libpng"
EXTRA_OECMAKE_append += "-DWITH_FFMPEG=ON -DWITH_GTK=OFF"  # and some other options

configure期间我收到 cmake 错误,似乎无法弄清楚如何满足 header 依赖项。错误是这样的(我认为这是 do_configure 失败的原因):
CheckIncludeFile.c:1:10: fatal error: /home/janos/dev/yocto/build/tmp/work/core2-64-poky-linux/opencv/4.1.0-r0/recipe-sysroot/usr/include/libpng/png.h: No such file or directory
    1 | #include </home/janos/dev/yocto/build/tmp/work/core2-64-poky-linux/opencv/4.1.0-r0/recipe-sysroot/usr/include/libpng/png.h>

CheckIncludeFile.c:1:10: fatal error: sys/videoio.h: No such file or directory
    1 | #include <sys/videoio.h>

专注于失踪png.h标题首先,我很想依赖 libpng-dev , 我也会 apt install它。但是没有它的包。

当我搜索 oe-pkgdata-util list-pkg-files -p libpng ,我可以在 libpng-dev 中找到标题包裹:
...
libpng-dev:
    /usr/bin/libpng-config
    /usr/bin/libpng16-config
    /usr/include/libpng16/png.h
    /usr/include/libpng16/pngconf.h
    /usr/include/libpng16/pnglibconf.h
    /usr/include/png.h
    ...
...

我也可以在 libpng-src 中找到它还有ffmpeg-src包(oe-pkgdata-util find-path "*png.h" 是我的 friend )。但是所有这些 -dev 和 -src 包我都不能在 DEPENDS 中依赖。 .

我怎样才能让我的食谱知道这些标题?

目标机器是 raspberrypi4-64 ,配方在其上配置和编译良好 - 当我为 qemux86-64 构建时失败,我用于测试。即我的测试命令是MACHINE="qemux86-64" bitbake opencv .

最佳答案

它并没有真正回答我认为是问题的问题 - 但这就是 opencv配方很容易配置:

PACKAGECONFIG = "python3 libav libv4l v4l"

调查 the opencv 4.1.0 recipe ( opencv_4.1.0.bb ),我可以看到 FFMPEG使用 libav 启用可配置选项。

由于依赖 FFMEPG ,我必须在我的 local.conf 中将“商业”许可证列入白名单文件:
LICENSE_FLAGS_WHITELIST = "commercial"

调查 ./build/tmp/work/aarch64-poky-linux/opencv/4.1.0-r0/temp/log.do_configure表明 opencv 在没有 GUI 的情况下正确配置,具有 v4l/v4l2:、FFMPEG、python3 等。

等等python3在生成的图像中:

import cv2
print(cv2.getBuildInformation())

关于opencv - Yocto:cmake 缺少 header - 如何依赖开发包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62379640/

相关文章:

linux - 如何在设备树中配置多个 I/O 扩展器 PCF8574a?

c++ - 将焦点转移到控制台 opencv c++

python - 如何从存在轻微背景的图像中提取文本?

android - 从 android 运行 ffmpeg 命令 ffmpeg 语法错误在 logcat 中

ffmpeg - 如何在 python 中读取 m4a 文件?

linux - 如何在 Yocto 中添加 Boost 头文件?

python - 如何通过 Yocto/poky 在 Jetson Nano 上使用带摄像头的 OpenCV

c++ - MPI 发送带有字节数组和整数的结构

c++ - 使用 OpenCV 将灰度图像转换为负片

android - 在 Windows 上使用 NDK r10 为 android 编译 ffmpeg 2.3