您好,登錄后才能下訂單哦!
WRTnode怎么添加OpenCV支持,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
opencv 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-test ipk源碼
下面我們利用opencv-test這個demo來測試opencv libs。測試程序實現功能是從攝像頭讀取圖片,保存在當前目錄。由于存儲空間受限,就存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 編譯生成的可執行文件 ################################################# $(eval $(call BuildPackage,opencv-test))
而opencv-test的源碼和編譯二進制代碼的Makefile在src目錄下。
備注:opencv應用程序幾乎可以認為是跨平臺的,我們可以在x86的windows或Mac下面進行開發,將與圖形窗口顯示和鍵盤輸入等OpenWrt不能支持的代碼去掉以后,即可保證在WRTnode上順利編譯通過并執行。
關于WRTnode怎么添加OpenCV支持問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。