博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
玩转智能路由器-WRTnode添加OpenCV支持
阅读量:7081 次
发布时间:2019-06-28

本文共 4710 字,大约阅读时间需要 15 分钟。

hot3.png

opencv libs库文件ipk编译

利用openwrt package的编译机制仅仅需要一个Makefile即可编译opencv。

为何会如此简单神奇,下面就对Makefile详解(个人看法,欢迎指正):

$vim Makefile

include $(TOPDIR)/rules.mk PKG_NAME:=opencv # PKG_NAME -软件包的名字, 在 menuconfig 和 ipkg 显示PKG_VERSION:=2.4.8 # PKG_VERSION -软件包的版本,主干分支的版本正是我们要下载的PKG_RELEASE:=1 # PKG_RELEASE -这个 makefile 的版本PKG_USE_MIPS16:=0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip # PKG_SOURCE -要下载的软件包的名字,一般是由 PKG_NAME 和 PKG_VERSION 组成PKG_SOURCE_URL:=http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.8/ # PKG_SOURCE_URL -下载这个软件包的链接 ,从网上得到的PKG_MD5SUM:=50cc1433b3654074206f5b3dbfd49848 ################################################### 软件包的 MD5 值,校验值,得到MD5的值的方法#$ ./scripts/update-package-md5sum ....../opencv/#PKG_CAT:= unzip#PKG_CAT -解压软件包的方法 (zcat, bzcat, unzip)##################################################include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk define Package/opencv/Default/description the Open Source Computer Vision Library for linux endef define Package/opencv   SECTION:=libs   CATEGORY:=Libraries   TITLE:= opencv-2.4.8   DEPENDS:=+libpthread +librt +libstdcpp +zlib +libjpeg endef ###################################################SECTION - 软件包类型 #CATEGORY - menuconfig中软件包所属的一级目录,如 Libraries#SUBMENU - menuconfig中软件包所属的二级目录(没有用到)#TITLE - 软件包标题#DESCRIPTION - 软件包的详细说明#URL - 软件的原始位置,一般是软件作者的主页#MAINTAINER - (optional) 软件包维护人员#DEPENDS - (optional) 依赖项,运行本软件依赖的其他包#################################################PKG_INSTALL:=1 CMAKE_OPTIONS += -DWITH_LIBV4L:BOOL=OFF -DBUILD_opencv_ts:BOOL=OFF##################################################CMAKE_OPTIONS #例如不想编译libv4l库、ts等,就选择OFF。#################################################define Build/InstallDev     $(INSTALL_DIR) $(1)/usr/include     $(CP) $(PKG_INSTALL_DIR)/usr/include/opencv $(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/ endef ################################################## define Build/InstallDev #生成的头文件和库放到  #./staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include 和 ./staging_dir/target- mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib 下#PKG_INSTALL_DIR  ./trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/opencv-2.4.8/ipkg-install #################################################define Package/opencv/install     $(INSTALL_DIR) $(1)/usr/include     $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/     $(INSTALL_DIR) $(1)/usr/lib     $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopencv* $(1)/usr/lib/ endef $(eval $(call BuildPackage,opencv))##################################################这是最为关键的BuildPackage宏。它是在$(INCLUDE_DIR)/package.mk文件里定义的。BuildPackage宏只要求 一个参数,即要编译的软件包名,在本例中是"opencv"。所有其他信息都通过宏来获得,这提供了一种内在的简洁性。比如BuildPackage需要软件包的一大串描述信息,我们并不要向它传递冗长的参数,因为我们已经约定描述信息定义在DESCRIPTION宏,BuildPackage从里面读取 就可以了。# Build/Compile (可选) # 编译源代码命令# Package/install # 软件安装命令,主要是把相关文件拷贝到指定目录,如配置文件。 #################################################

opencv测试程序的编译

opencv-test ipk源码

下面我们利用opencv-test这个demo来测试opencv libs。测试程序实现功能是从摄像头读取图片,保存在当前目录。由于存储空间受限,就存6张图片。 下面是生成opencv-test ipk包所需要的Makefile,其编译方法与其他任何ipk包的编译方法完全一样。

$vim Makefielinclude $(TOPDIR)/rules.mkPKG_NAME:=opencv-testPKG_RELEASE:=1PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-installinclude $(INCLUDE_DIR)/kernel.mkinclude $(INCLUDE_DIR)/package.mkdefine Package/opencv-test  SECTION:=wrtnode  CATEGORY:=WRTnode  SUBMENU :=demos  TITLE:=opencv demo app  DEPENDS := +opencvendef##################################################DEPENDS := +opencv ,依赖opencv lib#################################################define Package/opencv-test/description        WRTnode test program for opencv libendefdefine Build/Prepare        mkdir -p $(PKG_BUILD_DIR)        $(CP) ./src/* $(PKG_BUILD_DIR)/endefdefine Build/Compile        $(MAKE) -C $(PKG_BUILD_DIR) \                $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS)" \                        LDFLAGS="$(TARGET_LDFLAGS)"endef##################################################$(TARGET_CONFIGURE_OPTS) 、$(TARGET_CFLAGS)、 $(TARGET_LDFLAGS)等定义在rules.mk #################################################define Package/opencv-test/install        $(INSTALL_DIR) $(1)/usr/bin        $(INSTALL_BIN) $(PKG_BUILD_DIR)/cv_test $(1)/usr/bin/endef##################################################cv_test 编译生成的可执行文件#################################################$(eval $(call BuildPackage,opencv-test))

而opencv-test的源码和编译二进制代码的Makefile在src目录下,有兴趣的同学可以深入研究。

备注:opencv应用程序几乎可以认为是跨平台的,我们可以在x86的windows或Mac下面进行开发,将与图形窗口显示和键盘输入等OpenWrt不能支持的代码去掉以后,即可保证在WRTnode上顺利编译通过并执行。

转载于:https://my.oschina.net/u/2306127/blog/382609

你可能感兴趣的文章
style定义
查看>>
在服务器上搭建git仓库
查看>>
五子棋js
查看>>
ansible命令
查看>>
六种设计原则
查看>>
怎么查看被占用的端口号
查看>>
输入十个数,最大的数和第最后一个数对换,最小的数和第一个数字对换
查看>>
Linux指令--mv
查看>>
Python中如何实现im2col和col2im函数(sliding类型)
查看>>
IP校验shell脚本
查看>>
软件工程——《你的灯亮着吗》读书笔记
查看>>
Android平台刷机包制作研究(1)
查看>>
wamp下修改mysql root用户的登录密码方法
查看>>
怎样使用1M的内存排序100万个8位数
查看>>
Spark 性能相关參数配置具体解释-任务调度篇
查看>>
oracle 10g/11g RAC 启停归档模式
查看>>
MongoDB 删除数据库
查看>>
Centos6 Nginx安装
查看>>
python 11 函数名 迭代器
查看>>
oracle归档日志管理
查看>>