基于openwrt交叉编译opencv4.9.0版本

源码包的获取

源码获取有两种方式,一种是通过编译时在makefile指定它的git地址,在编译时下载,这种很依赖网速,网速不好时,编译会失败。另一种是我们将源码的压缩包下载到本地,放到我们的SDK中,只需要解压编译就可以了,这里我们用第二种方式,选择我们需要的版本即可。
源码的下载链接: link
将我们下载好的opencv-4.9.0.tar.xz的压缩包放在SDK的dl/目录下

修改Makefile

SDK/feeds/packages/libs/opencv/Makefile,没有目录或者文件则新建

# Copyright (C) 2024 Fusion CCTV, Inc.
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#include $(TOPDIR)/rules.mkPKG_NAME:=opencv
PKG_VERSION:=4.9.0
PKG_RELEASE:=1PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://sourceforge.net/projects/opencvlibrary/files/$(PKG_VERSION)/
PKG_MD5SUM:=b3e72c58db9b08a1f497f220a71e9332PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSEPKG_INSTALL:=1
CMAKE_INSTALL:=1
CMAKE_BINARY_SUBDIR:=build
PKG_BUILD_PARALLEL:=0
PKG_USE_MIPS16:=0# We need to include python3-package.mk for the python variables
# but we are not a python package, so set PYTHON3_PKG_BUILD.
PYTHON3_PKG_BUILD:=0PKG_BUILD_DEPENDS:= \+OPENCV_PYTHON:python3/hostinclude $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
include $(TOPDIR)/feeds/packages/lang/python/python3-package.mkdefine Package/opencv/Default/descriptionOpenCV (Open Source Computer Vision Library) is an open source computervision and machine learning software library. OpenCV was built to providea common infrastructure for computer vision applications and to acceleratethe use of machine perception in the commercial products. Being aBSD-licensed product, OpenCV makes it easy for businesses to utilizeand modify the code.
endefdefine Package/opencv/defaultSECTION:=libsCATEGORY:=LibrariesTITLE:=opencvURL:=https://opencv.org/DEPENDS:= \+libpthread +librt +libatomic +libstdcpp +zlib +libjpeg +libwebp \+OPENCV_FFMPEG:ffmpeg \+OPENCV_FFMPEG:bzip2 \+OPENCV_FFMPEG:libffmpeg-full \+OPENCV_JPEG:libjpeg \+OPENCV_PYTHON:python3-numpy \+OPENCV_PYTHON:python3-numpy-src \+OPENCV_V4L:libv4l \+OPENCV_V4L:libv4l \+OPENCV_TIFF:libtiff \+OPENCV_PNG:libpng \+OPENCV_GSTREAMER:gstreamer1 \+OPENCV_GSTREAMER:gstreamer1-libs
endefdefine Package/opencv$(call Package/opencv/default)
endefifeq ($(CONFIG_OPENCV_FFMPEG),y)CMAKE_OPTIONS += -DWITH_FFMPEG=ON
elseCMAKE_OPTIONS += -DWITH_FFMPEG=OFF
endififeq ($(CONFIG_OPENCV_JPEG),y)CMAKE_OPTIONS += \-DWITH_JPEG=ON \-DBUILD_OPENJPEG=ON \-DBUILD_JPEG=ON
elseCMAKE_OPTIONS += \-DWITH_JPEG=OFF \-DBUILD_OPENJPEG=OFF \-DBUILD_JPEG=OFF
endififeq ($(CONFIG_OPENCV_PYTHON),y)CMAKE_OPTIONS += \-DBUILD_opencv_python2=OFF \-DBUILD_opencv_python3=ON \-DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION) \-DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION).so \-DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR_ROOT)/usr/lib/python$(PYTHON3_VERSION)/site-packages/numpy/core/include \-DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION)/site-packages
elseCMAKE_OPTIONS += \-DBUILD_opencv_python2=OFF \-DBUILD_opencv_python3=OFF
endififeq ($(CONFIG_OPENCV_V4L),y)CMAKE_OPTIONS += \-DWITH_LIBV4L=ON \-DWITH_v4L=ON
elseCMAKE_OPTIONS += \-DWITH_LIBV4L=OFF \-DWITH_v4L=OFF
endififeq ($(CONFIG_OPENCV_TIFF),y)CMAKE_OPTIONS += \-DWITH_TIFF=ON
elseCMAKE_OPTIONS += \-DWITH_TIFF=OFF
endififeq ($(CONFIG_OPENCV_PNG),y)CMAKE_OPTIONS += \-DWITH_PNG=ON
elseCMAKE_OPTIONS += \-DWITH_PNG=OFF
endififeq ($(CONFIG_OPENCV_GSTREAMER),y)CMAKE_OPTIONS += \-DWITH_GSTREAMER=ON
elseCMAKE_OPTIONS += \-DWITH_GSTREAMER=OFF
endififeq ($(CONFIG_OPENCV_PROTOBUF),y)CMAKE_OPTIONS += \-DBUILD_PROTOBUF=ON \-DWITH_PROTOBUF=ON
elseCMAKE_OPTIONS += \-DBUILD_PROTOBUF=OFF \-DWITH_PROTOBUF=OFF
endif# OpenCV component options
CMAKE_OPTIONS += \-DBUILD_opencv_freetype=ON \-DBUILD_DOCS=OFF \-DBUILD_PERF_TESTS=OFF \-DBUILD_TESTS=OFF \-DBUILD_WITH_DEBUG_INFO=OFF \-DDOWNLOAD_EXTERNAL_TEST_DATA=OFF \-DOPENCV_GENERATE_PKGCONFIG=ON \-DCMAKE_VERBOSE=OFF \-DOPENCV_ENABLE_PKG_CONFIG=ON# OpenCV build options
CMAKE_OPTIONS += \-DBUILD_WITH_STATIC_CRT=OFF \-DENABLE_CCACHE=OFF \-DENABLE_COVERAGE=OFF \-DENABLE_FAST_MATH=ON \-DENABLE_IMPL_COLLECTION=OFF \-DENABLE_NOISY_WARNINGS=OFF \-DENABLE_OMIT_FRAME_POINTER=ON \-DENABLE_PRECOMPILED_HEADERS=OFF \-DENABLE_PROFILING=OFF \-DOPENCV_WARNINGS_ARE_ERRORS=OFF \-DBUILD_opencv_gpu:BOOL=OFF \-DWITH_1394:BOOL=OFF -DBUILD_opencv_stitching=OFF \-DBUILD_opencv_superres:BOOL=OFF -DBUILD_opencv_ts:BOOL=OFF \-DBUILD_opencv_highgui=ON \-DBUILD_opencv_videostab=ON \-DWITH_GTK=OFF# OpenCV link options
CMAKE_OPTIONS += \-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \-DCMAKE_SKIP_RPATH=OFF \-DCMAKE_USE_RELATIVE_PATHS=OFF# OpenCV packaging options:
CMAKE_OPTIONS += \-DBUILD_PACKAGE=OFF \-DENABLE_SOLUTION_FOLDERS=OFF \-DINSTALL_CREATE_DISTRIB=OFF# Cuda stuff
CMAKE_OPTIONS += \-DBUILD_CUDA_STUBS=OFF \-DBUILD_opencv_cudaarithm=OFF \-DBUILD_opencv_cudabgsegm=OFF \-DBUILD_opencv_cudacodec=OFF \-DBUILD_opencv_cudafeatures2d=OFF \-DBUILD_opencv_cudafilters=OFF \-DBUILD_opencv_cudaimgproc=OFF \-DBUILD_opencv_cudalegacy=OFF \-DBUILD_opencv_cudaobjdetect=OFF \-DBUILD_opencv_cudaoptflow=OFF \-DBUILD_opencv_cudastereo=OFF \-DBUILD_opencv_cudawarping=OFF \-DBUILD_opencv_cudev=OFF \-DWITH_CUBLAS=OFF \-DWITH_CUDA=OFF \-DWITH_CUFFT=OFF# NVidia stuff
CMAKE_OPTIONS += \-DWITH_NVCUVID=OFF \-DWITH_CAROTENE=OFF# AMD stuff
CMAKE_OPTIONS += \-DWITH_OPENCLAMDBLAS=OFF \-DWITH_OPENCLAMDFFT=OFF# Intel stuff
CMAKE_OPTIONS += \-DBUILD_WITH_DYNAMIC_IPP=OFF \-DWITH_INTELPERC=OFF \-DWITH_IPP=OFF \-DWITH_IPP_A=OFF# Smartek stuff
CMAKE_OPTIONS += -DWITH_GIGEAPI=OFF# Prosilica stuff
CMAKE_OPTIONS += -DWITH_PVAPI=OFF# Ximea stuff
CMAKE_OPTIONS += -DWITH_XIMEA=OFF# Non-Linux support (Android options) must remain OFF:
CMAKE_OPTIONS += \-DANDROID=OFF \-DBUILD_ANDROID_CAMERA_WRAPPER=OFF \-DBUILD_ANDROID_EXAMPLES=OFF \-DBUILD_ANDROID_SERVICE=OFF \-DBUILD_FAT_JAVA_LIB=OFF \-DINSTALL_ANDROID_EXAMPLES=OFF \-DWITH_ANDROID_CAMERA=OFF# Non-Linux support (Mac OSX options) must remain OFF:
CMAKE_OPTIONS += \-DWITH_AVFOUNDATION=OFF \-DWITH_CARBON=OFF \-DWITH_QUICKTIME=OFF# Non-Linux support (Windows options) must remain OFF:
CMAKE_OPTIONS += \-DWITH_CSTRIPES=OFF \-DWITH_DSHOW=OFF \-DWITH_MSMF=OFF \-DWITH_VFW=OFF \-DWITH_VIDEOINPUT=OFF \-DWITH_WIN32UI=OFF# Software/3rd-party support options:
CMAKE_OPTIONS += \-DBUILD_EXAMPLES=OFF \-DBUILD_JASPER=OFF \-DBUILD_OPENEXR=OFF \-DBUILD_PNG=OFF \-DBUILD_TIFF=OFF \-DBUILD_ZLIB=OFF \-DINSTALL_C_EXAMPLES=OFF \-DINSTALL_PYTHON_EXAMPLES=OFF \-DINSTALL_TO_MANGLED_PATHS=OFF# Disabled features (mostly because they are not available in OpenWRT)
CMAKE_OPTIONS += \-DWITH_CLP=OFF \-DWITH_GDAL=OFF \-DWITH_GPHOTO2=OFF \-DWITH_GSTREAMER_0_10=OFF \-DWITH_LAPACK=OFF \-DWITH_MATLAB=OFF \-DWITH_OPENCL=OFF \-DWITH_OPENCL_SVM=OFF \-DWITH_OPENEXR=OFF \-DWITH_OPENNI2=OFF \-DWITH_OPENNI=OFF \-DWITH_UNICAP=OFF \-DWITH_VA=OFF \-DWITH_VA_INTEL=OFF \-DWITH_VTK=OFF \-DWITH_XINE=OFFTARGET_LDFLAGS += -latomicdefine Build/InstallDev$(INSTALL_DIR) $(1)/usr/include$(CP) $(PKG_INSTALL_DIR)/usr/include/opencv4/ $(1)/usr/include/#$(CP) $(PKG_INSTALL_DIR)/usr/include/opencv2 $(1)/usr/include/$(INSTALL_DIR) $(1)/usr/lib$(CP) $(PKG_INSTALL_DIR)/usr/lib/libopencv* $(1)/usr/lib/
endefdefine Package/opencv/install$(INSTALL_DIR) $(1)/usr/lib$(CP) $(PKG_INSTALL_DIR)/usr/lib/libopencv* $(1)/usr/lib/ifeq ($(CONFIG_OPENCV_PYTHON),y)$(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)cp -r  $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/cv2 $(1)$(PYTHON3_PKG_DIR)/cv2mv $(1)$(PYTHON3_PKG_DIR)/cv2/python-$(PYTHON3_VERSION)/cv2.cpython-*.so \$(1)$(PYTHON3_PKG_DIR)/cv2/python-$(PYTHON3_VERSION)/cv2.cpython-$(PYTHON3_VERSION).so
endif
endef$(eval $(call BuildPackage,opencv))

更新扩展包

这些都准备就绪后,我们需要将我们的opencv在编译时勾选,先更新我们的扩展包,使其在make menuconfig时出现

./scripts/feeds update -a
./scripts/feeds install -a

make menuconfig

在make menuconfig后勾选我们的opencv扩展,在libraries->opencv
在这里插入图片描述
在这里插入图片描述

全编

make V=s

编译成功后查看目录和生成文件
解压编译后的开源包:
SDK/build_dir/target-mipsel_24kc_musl/opencv-4.9.0/
生成的库文件目录:
SDK/staging_dir/target-mipsel_24kc_musl/usr/lib

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以场景驱动CMDB数据治理经验分享

数据治理是 CMDB 项目实施中难度最大、成本最高的环节,是一个长期治理的过程,而行业很少提出 CMDB 数据治理的技术实现方案。CMDB 数据治理不仅需要解决配置管理工程性的技术问题,还要基于运维组织的特点,建立适应性的配置运营能力…

DS进阶:并查集

一、并查集的原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这…

SCSS全局配置 vue项目(二)

目录 1、先要查看node版本 2、安装对应的node-sass、sass-loader版本 2.1根据项目使用的node版本安装对应的node-sass版本 2.2根据node-sass版本选择兼容的sass-loader版本,不然项目无法正常运行 3、在 vue.config.js 中配置: 4、在组件中…

国家级会议报道:贝锐蒲公英异地组网高效实现前方数据回传

作为市委宣传部的国有新闻媒体,在日常工作中会派遣大量人员外出进行采访、报道,还经常面临国家级重要会议或活动的报道任务。 在这些工作中,前方人员往往需要和后方人员协同、保证内容的时效性,及时反馈现场的相关资料和信息、访…

FSRCNN:加速超分辨率卷积神经网络,SRCNN的加速版

paper:https://arxiv.org/pdf/1608.00367 code: https://github.com/yjn870/FSRCNN-pytorch/tree/master 目录 1. 动机 2. 方法 3. 代码对比 4. 实验结果 1. 动机 作者此前提出的SRCNN证明了CNN在图像超分领域的有效性。然而,SRCNN计算效率较低&#…

​可视化大屏C位图:城市地图,一览城市全貌信息。

城市地图是一种常见的可视化大屏C位图,用于展示城市的地理分布和相关数据。以下是对城市地图的解读: 地理分布 城市地图可以展示不同地理区域的城市分布情况。通过地图上的点、标记或区域着色等方式,可以清晰地看到城市的位置和分布范围。这…

六天以太坊去中心化租房平台,前端+合约源码

六天以太坊去中心化租房平台 概述项目结构合约部署运行项目功能介绍一、首页二、房东后台我的房屋我的订单上架新房屋 三、租户后台我的房屋我的订单 四、仲裁后台 下载地址 概述 六天区块链房屋租赁系统,采用去中心化的方式实现了房屋的租赁功能。房东可在平台上托…

PDF 书签制作与调整 从可编辑、不可编辑 PDF 文档创建书签的方法

本文是对以前发表的旧文拆分,因为原文主题太多,过长,特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

外贸财务挑战面面观:应对难题之道大揭秘!

出海也开始卷起来了。越来越多的中国企业投身海外市场,寻求更广阔的发展空间。然而,出海之路并非坦途,企业既需把握全球商机,又需应对数字化转型、本土化运营、文化差异性等多重挑战。企业出海,该如何应对这些风浪&…

【数据结构与算法设计】上机课习题四

第四章作业 一、选择题1,2,3,4,5 1.串是一种特殊的线性表,其特殊性体现在(B) A.可以顺序存储 B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字 2.设有两个串p和q,求q在p中首次出现的位置的运算称为(B&a…

MB6F-ASEMI新能源专用整流桥MB6F

编辑:ll MB6F-ASEMI新能源专用整流桥MB6F 型号:MB6F 品牌:ASEMI 封装:MBF-4 最大重复峰值反向电压:600V 最大正向平均整流电流(Vdss):1A 功率(Pd):小功率 芯片个数:4 引脚数…

.net6 webapi 部署到IIS

一、发布.net6 webapi 项目 1.1 visual studio 2022右键发布到文件夹。 二、增加IIS容器 2.1 控制面板 2.2 启用或关闭Windows功能 3.3 勾选Internet Information Services,点击确定进行安装 三、部署webapi到IIS 3.1 安装 dotnet-hosting-6.0.29-win.exe 3.2 创建应用…

详细解析什么是期权交易的获利方法

期权交易的获利方法 在期权交易之前进行充分的准备工作和风险评估是至关重要的。其中行情结构、策略方法、预期收益和风险评估,是期权交易成功的关键要素。它们能帮助我们更好地制定交易计划,控制风险,并追求稳定的利润。以下是对这四点的详…

wifi可以连接但是上不了网该怎么解决?

上网的过程中,我们有时候会遇到wifi可以连接但是上不了网的情况,打开电脑浏览器,显示域名解析错误。遇到这种情况,一般说明IP与站点的解析过程出现了错误。 在网络中的主机都是IP地址来标识的,如果在浏览器输入此IP地…

HR常用的人才测评工具都有哪些?

随着近年来,人才测评工具的普及,已经有许多企业从中获益,在线人才测评成为先进招聘方式之一。一般来说,人们口中的人才测评工具,实际上并不是各种精密的仪器,而是由心理学系统构成的测试理论。使用这些工具…

BUUCTF--web(1)

1、[极客大挑战 2019]Http1 1.http报文请求: 1、请求行: 第一部分是请求方法,常见包括GET、POST、OPTIONS(我目前还没有见过我是菜鸡) 第二部分是url 第三部分是HTTP协议(http(Hypertext transfer protocol)超文本传…

打造智能语音机器人-用语音控制机器人

人工智能现已成为国家发展重大战略,智能语音技术作为人工智能产业链上的关键一环,AI应用成熟的技术之一,人工智能的发展也进入了一个崭新的阶段。那么打造智能语音机器人怎样实现用语音控制机器人呢?和小编一起来看看。 选择合适的…

jmeter之连接MySQL数据库

jmeter连接mysql数据库 mysql官网下载地址:MySQL :: Download Connector/J 步骤如下: 1、下载mysql的jar包放入到jmeter的lib/ext下,然后重启jmeter 链接: https://pan.baidu.com/s/1rRrMQKnEuKz8zOUfMdMHFg?pwdawfc 提取码: awfc 2、配置…

selenium入门篇(环境搭建、八大定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试,还需要记录、调试网页的细节 一、selenium环境搭建 一键搭建 pip3 install webdriver-helper 安装后自动的完成: 1. 查看浏览器的版本号 2. 查询操作系统的类型 …

本地Mysql开启远程访问(图文)

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 事因是访问同事的数据库时,出现无法访问 出现1130 - Host ‘IT07’ is not allowed to connect to this MySQL server截图如下: 2. 原理分析 如果账号密码地址都正常的情况下,这是没开…