- 學習OpenCV 4:基于Python的算法實戰
- 肖鈴
- 464字
- 2022-05-05 19:40:06
1.4.2 案例5:OpenCV裁剪編譯
OpenCV包含很多模塊,功能齊全,但是對于很多讀者來說,這些模塊并不一定都用得上,而且編譯了這些模塊之后,二進制庫會比較大。對于很多軟件部署來說,這會造成資源的浪費,因此,本節介紹OpenCV的裁剪編譯,裁剪不必要的模塊使之不參與編譯。
在CMake配置(Configure)完成之后,讀者可以勾選要編譯的模塊,如圖1.38所示。

圖1.38
OpenCV的所有模塊都有對應的編譯選項,如core模塊對應的編譯選項是BUILD_opencv_core,圖1.38是OpenCV的默認編譯配置。對于某些讀者來說,可能只需使用OpenCV讀/寫圖像,做一些基本的變換操作,此時,只需編譯core、imgproc和imgcodecs這3個模塊即可。如果讀者只需編譯C++的二進制庫文件,不需要編譯其他語言的包,則可以去掉其他語言選項,如BUILD_JAVA語言選項。
本案例裁剪后只保留core、imgproc和imgcodecs這3個模塊的編譯選項,讀者記得勾選“BUILD_opencv_world”復選框,編譯的Release結果如圖1.39所示。

圖1.39
在圖1.39中,opencv_world450.dll的大小為36997KB,對比圖1.37中的opencv_world450.dll(58516KB),可以看出,裁剪后占用空間變小,方便部署使用。
讀者也可以通過編譯命令控制模塊是否參與編譯,如不編譯dnn模塊,可以將其開關關掉:

同理,其他模塊可以通過-DBUILD_opencv_*=OFF關閉編譯選項,通過-DBUILD_opencv_*=ON打開編譯選項。
推薦閱讀
- WildFly:New Features
- OpenDaylight Cookbook
- Python科學計算(第2版)
- Getting started with Google Guava
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- PhoneGap Mobile Application Development Cookbook
- Apache Mahout Clustering Designs
- 低代碼平臺開發實踐:基于React
- GameMaker Essentials
- Python大學實用教程
- Spring技術內幕:深入解析Spring架構與設計原理(第2版)
- Arduino計算機視覺編程
- Principles of Strategic Data Science
- ExtJS Web應用程序開發指南第2版
- OpenCV with Python Blueprints