溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

WRTnode怎么添加OpenCV支持

發(fā)布時(shí)間:2021-12-15 18:16:29 來源:億速云 閱讀:147 作者:柒染 欄目:互聯(lián)網(wǎng)科技

WRTnode怎么添加OpenCV支持,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

opencv libs庫文件ipk編譯

opencv ipk源碼

利用openwrt package的編譯機(jī)制僅僅需要一個(gè)Makefile即可編譯opencv。

為何會(huì)如此簡單神奇,下面就對(duì)Makefile詳解(個(gè)人看法,歡迎指正):

$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 -這個(gè) 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 -下載這個(gè)軟件包的鏈接 ,從網(wǎng)上得到的
PKG_MD5SUM:=50cc1433b3654074206f5b3dbfd49848 
##################################################
# 軟件包的 MD5 值,校驗(yàn)值,得到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中軟件包所屬的一級(jí)目錄,如 Libraries
#SUBMENU - menuconfig中軟件包所屬的二級(jí)目錄(沒有用到)
#TITLE - 軟件包標(biāo)題
#DESCRIPTION - 軟件包的詳細(xì)說明
#URL - 軟件的原始位置,一般是軟件作者的主頁
#MAINTAINER - (optional) 軟件包維護(hù)人員
#DEPENDS - (optional) 依賴項(xiàng),運(yùn)行本軟件依賴的其他包
#################################################
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))
#################################################
#這是最為關(guān)鍵的BuildPackage宏。它是在$(INCLUDE_DIR)/package.mk文件里定義的。BuildPackage宏只要求 一個(gè)參數(shù),即要編譯的軟件包名,在本例中是"opencv"。所有其他信息都通過宏來獲得,這提供了一種內(nèi)在的簡潔性。比如BuildPackage需要軟件包的一大串描述信息,我們并不要向它傳遞冗長的參數(shù),因?yàn)槲覀円呀?jīng)約定描述信息定義在DESCRIPTION宏,BuildPackage從里面讀取 就可以了。
# Build/Compile (可選) 
# 編譯源代碼命令
# Package/install 
# 軟件安裝命令,主要是把相關(guān)文件拷貝到指定目錄,如配置文件。 
#################################################

opencv測(cè)試程序的編譯

opencv-test ipk源碼

下面我們利用opencv-test這個(gè)demo來測(cè)試opencv libs。測(cè)試程序?qū)崿F(xiàn)功能是從攝像頭讀取圖片,保存在當(dāng)前目錄。由于存儲(chǔ)空間受限,就存6張圖片。 下面是生成opencv-test ipk包所需要的Makefile,其編譯方法與其他任何ipk包的編譯方法完全一樣。

$vim Makefiel

include $(TOPDIR)/rules.mk
PKG_NAME:=opencv-test
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define Package/opencv-test
  SECTION:=wrtnode
  CATEGORY:=WRTnode
  SUBMENU :=demos
  TITLE:=opencv demo app
  DEPENDS := +opencv
endef
#################################################
#DEPENDS := +opencv ,依賴opencv lib
#################################################
define Package/opencv-test/description
        WRTnode test program for opencv lib
endef
define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define 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 編譯生成的可執(zhí)行文件
#################################################
$(eval $(call BuildPackage,opencv-test))

而opencv-test的源碼和編譯二進(jìn)制代碼的Makefile在src目錄下。

備注:opencv應(yīng)用程序幾乎可以認(rèn)為是跨平臺(tái)的,我們可以在x86的windows或Mac下面進(jìn)行開發(fā),將與圖形窗口顯示和鍵盤輸入等OpenWrt不能支持的代碼去掉以后,即可保證在WRTnode上順利編譯通過并執(zhí)行。

關(guān)于WRTnode怎么添加OpenCV支持問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI