1下载源码
下载源码
https://github.com/opencv/opencv/releases/tag/3.4.9
https://github.com/opencv/opencv/releases/tag/3.4.20
下载扩展源码
https://github.com/opencv/opencv_contrib/releases/tag/3.4.9
https://github.com/opencv/opencv_contrib/releases/tag/3.4.20
2安装依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | sudo apt- get update sudo apt- get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt- get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt- get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy python3 -m pip install --upgrade pip sudo apt- get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev sudo apt- get install -y libjasper1 libjasper-dev sudo apt- get install -y libdc1394-22-dev sudo apt- get install -y libv4l-dev v4l-utils qv4l2 sudo apt- get install -y curl <br>sudo apt install libhdf5-dev<br><br> #后面用到 sudo apt- get install -y cmake-gui |
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev
sudo apt-get install libvtk6-dev
打开
1 | cmake-gui |
3-1 扩展库位置
3-2 cuda 一把不选
3-3 sifi点
3-4 java 不需要
3-5 python 默认吧
3-6 集成库 不要
3-7安装路径 多版本共存问题
https://blog.csdn.net/xiao_qs/article/details/126650329
一般是/usr/local/lib下,比如我的opencv4.4.5, 因为安装的时候如果不指定prefix路径,那么在make install 时会将所有的 .so 文件安装在 /usr/local/lib 下,所有的头文件安装在/usr/include下。
修改
4 生成
成功后
5 编译
1 | sudo make -j8 |
安装
1 | sudo make install |
多版本配置 指定版本opencv参与项目编译
CMakeLists.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 | #CMAKE_PREFIX_PATH只是添加了查找路径,如果系统默认路径也有另一个版本的opencv,并不能指定 # 设置 OpenCV 的路径 # opencv4.5 OpenCVConfig位置 # set(OpenCV_DIR "/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib/cmake/opencv4") # opencv3.4.9 OpenCVConfig位置 set (OpenCV_DIR "/home/dongdong/1sorftware/1work/opencv/opencv349/install/share/OpenCV" ) find_package(OpenCV REQUIRED) # 你的其他配置 include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(your_executable your_source_files) target_link_libraries(your_executable ${OpenCV_LIBS}) |
系统配置文件
1 | sudo chmod - R 777 .bashrc |
1 2 3 4 5 6 7 8 9 10 | # opencv版本制定 # opencv3.4.9 OpenCVConfig位置 export OpenCV_DIR = / home / dongdong / 1sorftware / 1work / opencv / opencv349 / install / share / OpenCV export LD_LIBRARY_PATH = / home / dongdong / 1sorftware / 1work / opencv / opencv349 / install / lib:$LD_LIBRARY_PATH export CPLUS_INCLUDE_PATH = / home / dongdong / 1sorftware / 1work / opencv / opencv349 / install / include / opencv2:$CPLUS_INCLUDE_PATH # opencv4.5 OpenCVConfig位置 #export OpenCV_DIR=/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib/cmake/opencv4 #export LD_LIBRARY_PATH=/home/dongdong/1sorftware/1work/opencv/opencv455/install/lib:$LD_LIBRARY_PATH #export CPLUS_INCLUDE_PATH=/home/dongdong/1sorftware/1work/opencv/opencv455/install/include/opencv4:$CPLUS_INCLUDE_PATH |
使更改生效:
source ~
/
.bashrc
检查确认
echo $OpenCV_DIR
8测试
1系统环境没有添加opencv
2 装了两个版本
创建工程
CMakeLists.txt
容易受到默认系统路径其他的opencv干扰,例如ros cv_briage 直接装自动装opencv4.2到系统目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | cmake_minimum_required(VERSION 3.1) #项目名字 project(opencv_example_project) #设置opencv安装路径 set (CMAKE_PREFIX_PATH "/home/r9000k/v1_software/opencv/opencv349/install" ) #set(CMAKE_PREFIX_PATH "/home/r9000k/v1_software/opencv/opencv455/install") #自动查找库和文件 find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) #打印消息 message(STATUS "OpenCV library status:" ) message(STATUS " config: ${OpenCV_DIR}" ) message(STATUS " version: ${OpenCV_VERSION}" ) message(STATUS " libraries: ${OpenCV_LIBS}" ) message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}" ) #生成可知性文件 add_executable(opencv_example main.cpp) #可执行文件绑定库 target_link_libraries(opencv_example PRIVATE ${OpenCV_LIBS}) |
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "opencv2/videoio.hpp" #include <iostream> using namespace cv; using namespace std; void drawText(Mat & image); int main() { cout << "Built with OpenCV " << CV_VERSION << endl; Mat image; VideoCapture capture; capture.open(0); if (capture.isOpened()) { cout << "Capture is opened" << endl; for (;;) { capture >> image; if (image.empty()) break ; drawText(image); imshow( "Sample" , image); if (waitKey(10) >= 0) break ; } } else { cout << "No capture" << endl; image = Mat::zeros(480, 640, CV_8UC1); drawText(image); imshow( "Sample" , image); waitKey(0); } return 0; } void drawText(Mat & image) { putText(image, "Hello OpenCV" , Point(20, 50), FONT_HERSHEY_COMPLEX, 1, // font face and scale Scalar(255, 255, 255), // white 1, LINE_AA); // line thickness and type } |
传建build并编译
1 | cmake .. |
生成
1 | make |
执行
1 | ./opencv_example |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-09-22 ESP8266 HTTP 项目(2)HTTP网页修改WIFI连接,上电自动连接上次的WIFI。
2017-09-22 奔三之际,任性一把 ——从华为南研所裸辞后的一些体会和感想