OpenCV - Ubuntu编译opencv(以全志V851s为例)
1.主要参考教程《使用CMake-gui编译OpenCV3源码的详细过程》,实际操作结合多个教程。
2.放从OPENCV RELEASE 下载的解压出来的文件,里面还要放对应版本的contribute 解压文件
/root/opencv-4.5.4
/root/opencv-4.5.4/build6
在这里要找到三个地方进行修改;
1、勾选上BUILD_opencv_world
2、在CMAKE_BUILD_TYPE后填上:RELEASE
3、在OPENCV_EXTRA_MODULES_PATH后填上opencv-contrib/modules的路径
比如我是:/home/wsx/opencv/opencv/opencv_contrib/modules
完成之后再次点击Configure按钮,稍等片刻,之后在点击Generate按钮
(所有红色报错,全部关掉即可)
交叉编译工具链地址:
/root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-gcc /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-g++ /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/bin/
注意:
-
取消WITH_GTK
取消WITH_TIFF , PNG ,JPG
所有红色报错的功能,都不要勾选,或者自己搞定。 -
如果点击configure提示处理器未识别
那么执行vi /root/opencv-4.5.4/cmake/OpenCVDetectCXXCompiler.cmake
可以在第47行,写入 set(CMAKE_SYSTEM_PROCESSOR arm)
(一定会提示,一定要这么做。)
4、 如果要修改默认的install文件夹,要在点击Generate之前修改,修改方式如下vi /root/opencv-4.5.4/build6/CMakeCache.txt
修改CMAKE_INSTALL_PREFIX:PATH=/root/opencv-4.5.4/build6
5、进入目录
/root/opencv-4.5.4/build6/
执行 cmake .
执行 export STAGING_DIR=/root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin
执行 make -j20
(看自己的线程数,设定)
到此编译成功
6、编译出来的文件
动态库文件 /usr/local/lib/
文件库 /usr/local/include/opencv4/
注意下面步骤中成功编译出来的固件,是不含动态库的,所以还需要编译时所用的动态库,同步复制到板子的/usr/lib/ 里面去。否则报错找不到动态库
7、编译一个opencv example
首先 执行
export STAGING_DIR=/root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin
任意目录下创建3个文件
1.CMakeLists.txt
cmake_minimum_required(VERSION 3.10) set (ARM_LINUX_GCC_PATH /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/) # 改成你的路径 set (CMAKE_C_COMPILER ${ARM_LINUX_GCC_PATH}arm-openwrt-linux-gcc) set (CMAKE_CXX_COMPILER ${ARM_LINUX_GCC_PATH}arm-openwrt-linux-g++) project(Test_OpenCV_Mobile) set(CMAKE_CXX_STANDARD 11) set(OpenCV_DIR "/root/opencv-4.5.4/") # 改成你的路径 find_package(OpenCV REQUIRED) FIND_PACKAGE(OpenMP REQUIRED) add_executable(Test_OpenCV_Mobile main.cpp) target_link_libraries(Test_OpenCV_Mobile pthread) target_link_libraries(Test_OpenCV_Mobile dl) target_link_libraries(Test_OpenCV_Mobile -fopenmp) target_link_libraries(Test_OpenCV_Mobile ${OpenCV_LIBS})
2.makefile
OPENCV_DIR := /root/opencv-4.5.4/ THIRD_PART_INCLUDE := -I$(OPENCV_DIR)include/opencv4 -I$(OPENCV_DIR)include/opencv4/opencv2 THIRD_PART_LIBRARY := $(OPENCV_DIR)lib/libopencv_highgui.a $(OPENCV_DIR)lib/libopencv_features2d.a $(OPENCV_DIR)lib/libopencv_imgproc.a $(OPENCV_DIR)lib/libopencv_photo.a $(OPENCV_DIR)lib/libopencv_video.a $(OPENCV_DIR)lib/libopencv_core.a TARGET = Test_OpenCV_Mobile START: @echo START rm -rf $(TARGET) /root/tina-v853-docker/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-g++ -O2 -std=c++11 -lpthread -fopenmp -ldl $(CFLAGS) $(THIRD_PART_INCLUDE) -o $(TARGET) ./main.cpp $(THIRD_PART_LIBRARY) .PHONY:clean clean: rm -rf $(BINDIR)
3.main.cpp
#include <opencv2/opencv.hpp> #include <iostream> int main() { cv::Mat mat = cv::Mat::zeros(256,256, CV_8UC1); { cv::rectangle(mat, cv::Rect(40, 45, 51, 65), cv::Scalar(255), -1, cv::LINE_8, 0);//绘制填充矩形 cv::rectangle(mat, cv::Rect(180, 180, 85, 21), cv::Scalar(255), -1, cv::LINE_8, 0);//绘制填充矩形 std::cout << "mat.rows = " << mat.rows << std::endl; std::cout << "mat.cols = " << mat.cols << std::endl; } return 0; }
8.编译 opencv example
在创建的目录里面,执行
cmake . make
9、将文件推进板子,并添加权限执行
10、推送相应的动态库进入 /usr/lib
比如 world,core….
11、最后终端执行,推送进来的文件。
./Test_OpenCV/example
到此 opencv 4.5.4 编译成功,并运行opencv example成功。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
楠姐技术漫话:图计算的那些事 | 京东云技术团队
不知道大家在平时的工作中 有没有听说过“图计算”这个名词 但大家一定在各工作汇报,技术分享中听说过“智能化”,“人工智能”这样的字眼 而我们今天要唠的这个图计算 就是人工智能领域内近几年炙手可热的前沿宠儿 也是我们风控反欺诈中常用的“大杀器” 在了解图计算之前 首先得了解什么是“图” 我们今天所说的图 其实是用于表示对象之间关联关系的一种数据结构 具有很强的抽象性和灵活性 在结构和语义等方面具有很强的表示能力 正是由于图结构丰富的表现力 在现实生活中有很多可以表示为“图”的例子 例如社交网络、道路网、金融交易等 研发或者算法相关的小伙伴们都知道 我们常用的机器学习和深度学习算法 大多都是用于处理一些规整、有序,或者结构化的数据 比如矩阵、图片、文本、序列等 且所处理的数据都是被假设是独立同分布的 然而图上的节点都是自然相连 这也就表明节点之间不是独立的 此时,今天我们要提的图计算就来了 它的核心正是为了将数据建模为图结构 并解决如何将问题解法转化为图结构上的计算问题 当算法任务涉及到多个体之间关联分析时 图计算往往能够使得问题能很自然地表示为一系列对图结构的操作和计...
- 下一篇
GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】 | 京东云技术团队
模型介绍 Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿的模型参数(模型参数越大,模型的推理能力越强,当然随之训练模型的成本也就越高)。 LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。如果想让一个预训练大语言模型能够执行特定领域内的任务,一般需要做fine-tuning,但是目前推理效果好的大语言模型参数维度非常非常大,有些甚至是上千亿维,如果直接在大语言模型上做fine-tuning,计算量会非常的大,成本也会非常的高。 ’LoRA的做法是冻结预训练好的模型参数,然后在每个Transformer块里注入可训练的层,由于不需要对模型的参数重新计算梯度,所以,会大大的减少计算量。 具体如下图所示,核心思想是在原始预训练模型增加一个旁路,做一个降维再升维的操作。训练的时候固定预训练模型的参数,只训练降维...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19