基于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、在组件中…

深入浅出掌握CSS选择器

CSS选择器是CSS规则的核心组成部分,它们犹如一把钥匙,帮助开发者精准锁定并装饰HTML文档中的各类元素。正确理解和熟练运用CSS选择器,能够极大提升代码效率和页面表现力。本文将系统全面地剖析CSS选择器的种类、用途及应用场景,并…

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

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

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计算效率较低&#…

PHP EOF(heredoc) 使用说明

在PHP中,EOF(End Of File)或heredoc是一种定义字符串的方法,它允许你跨越多行来定义字符串,而无需使用大量的引号或字符串连接符。这在编写多行文本、SQL查询或HTML内容时特别有用。 使用heredoc的基本语法如下&#…

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

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

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

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

Java 2024 常见多线程20道面试题

Java 2024 常见多线程20道面试题 简介: 线程是一种轻量级进程,用于实现并发编程。它是操作系统进行调度的基本单位,可以独立运行并共享进程资源。线程能够提高程序的并发性和响应速度,并节约系统资源,因此在多任务和并…

C++ Primer Plus

第一章 初始C #include <iostream> //#:预处理int main(void) //void:无参数 {using namespace std;int carrots; //定义声明语句:开辟内存空间&#xff0c; int:整型 cout << "how many corrots do you have?" << endl; //cout:输出流(out) end…

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

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

【MySQL】select查询

1. 基本的SELECT语句 1.1 SELECT ... FROM SELECT 标识选择哪些列FROM 标识从哪个表中选择例&#xff1a;SELECT * FROM student; #使用通配符&#xff0c;*表示返回所有的列例&#xff1a;SELECT id,name,guardian_phone FROM student; #具体行和列 1.2 列的别名 …

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

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

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

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

phpstudy-Ubuntu面板(小皮面板)

Ubuntu安装脚本 :(无docker版本) wget -O install.sh https://notdocker.xp.cn/install.sh && sudo bash install.sh Ubuntu安装脚本 :(有docker版本) wget -O install.sh https://download.xp.cn/install.sh && sudo bash install.sh 参考&#xff1a;linux 完…

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

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

内网渗透1

&#xff08;1&#xff09;&#xff1a;问题1 windows登录的明文密码如何存储&#xff0c;存储过程是怎么样的&#xff0c;密文存在哪个文件下&#xff0c;该文件是否可以打开并查看到密文&#xff1f; 在windows的登录框中输入账号密码&#xff0c;这个登录是有一个进程的叫做…

.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 创建应用…

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

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