既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
sudo apt install -y build-essential cmake git pkg-config libopenexr-dev libblas-dev
sudo apt install -y python-dev python-numpy libtbb2 libtbb-dev
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libjasper-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libavutil-dev
sudo apt install -y \
libx264-dev \
mesa-utils \
libgtk2.0-dev \
libxvidcore-dev \
yasm \
libxine2-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libv4l-dev \
libfaac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libtheora-dev \
libvorbis-dev \
ffmpeg \
libeigen3-dev libeigen3-doc \
liblapack-dev \
tesseract-ocr \
tesseract-ocr-jpn \
libgflags-dev \
libleptonica-dev \
libtesseract-dev \
gphoto2 \
liblapacke-dev \
libgoogle-glog-dev \
libprotobuf-dev \
libprotoc-dev \
protobuf-compiler \
ccache \
libgphoto2-dev \
libavresample-dev \
libatlas-base-dev \
gfortran
下载安装包
下载opencv源码:opencv的github链接
下载opencv_contrib源码:opencv_contrib的github链接(可以不用,看需要)
需要注意,如果要编译contrib,需要使contrib的版本号与opencv对应。下载完成后均解压,放置到自己的目标位置。
编译opencv动态库(so)
参考链接:openCV+opencv_contrib(编译源码)
在opencv的解压文件中,创建编译文件保存的文件夹,如build,并在该文件夹中打开终端,执行:
cmake -D CMAKE\_BUILD\_TYPE=RELEASE \
-D CMAKE\_INSTALL\_PREFIX=/usr/local \
-D PYTHON\_DEFAULT\_EXECUTABLE=/usr/bin/python3 \
-D OPENCV\_EXTRA\_MODULES\_PATH=~/opencv_contrib/modules/ \
-D OPENCV\_GENERATE\_PKGCONFIG=YES \
-D OPENCV\_ENABLE\_NONFREE=True \
-D ENABLE\_CXX11=1 \
-D ENABLE\_FAST\_MATH=1 \
-D WITH\_TBB=ON \
-D WITH\_OPENGL=ON \
-D WITH\_OPENMP=ON \
-D WITH\_TIFF=ON -D BUILD\_TIFF=ON \
-D WITH\_1394=OFF \
-D WITH\_GDAL=ON \
-D WITH\_CUDA=ON -D CUDA\_NVCC\_FLAGS="-D\_FORCE\_INLINES"\
-D WITH\_CUBLAS=ON -D WITH\_CUFFT=ON \
-D INSTALL\_C\_EXAMPLES=OFF \
-D INSTALL\_PYTHON\_EXAMPLES=OFF \
-D BUILD\_EXAMPLES=OFF ..
以上为举例,目前还未完全测试各条命令有效性,后续更新。
其中PYTHON_DEFAULT_EXECUTABLE
为要安装opencv的python路径,一般Ubuntu中都有多个版本的python;
CMAKE_INSTALL_PREFIX
是编译后相关so文件的放置位置,这个最好保持该设置;
OPENCV_EXTRA_MODULES_PATH
为opencv_contrib中modules的路径,如果不准备编译opencv_contrib可以删除这一项。
fatal error: nvcuvid.h: No such file or directory
- 在cuda10的时候,cudacodec会出现nvcuvid.h找不到的情况,我将cudacodec模块删掉可以正常编译,目前最新的opencv_contrib在2018年12月18日已修复了该bug,如果是使用该时间之后的版本应该可以正常编译。
- 方法二,参考OpenCV 4.1 CUDA 10.1 linux下编译问题【fatal error: nvcuvid.h: No such file or directory】,可以在官网中下载相关组件,将cuviddec.h 和 nvcuvid.h文件拷贝到/usr/include即可。
生成makefile文件后,即可执行make操作,如果发现生成表中有数据不对或者生成出错,需要将该文件夹中相关文件删除,再修改cmake指令后重新生成:
# 查找该机器可使用的编译线程数
nproc
# 假如输出是8, 执行8线程编译
sudo make -j8
sudo make install
安装完成后,会在/usr/local/lib中看到lib*.so.*文件,并在/usr/local/lib/pkgconfig下生成了opencv.pc文件,记录OpenCV的文件路径,此时进行如下配置:
# 编辑/etc/bash.bashrc
sudo gedit /etc/bash.bashrc
# 在文件末尾添加
PKG\_CONFIG\_PATH=$PKG\_CONFIG\_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
# 退出并更新
sudo updatedb
# 编辑/etc/ld.so.conf.d/opencv.conf
sudo gedit /etc/ld.so.conf.d/opencv.conf
# 在文件末尾添加
/usr/local/lib
# 退出并更新
sudo ldconfig
编译opencv静态库(a)
参考链接:Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件)
有的项目需要使用opencv的.a静态库,动态库能生成部分.a文件,但是不完整,因此找了下生成静态库的方法。
与创建动态库相同,在opencv文件夹中创建生成文件的文件夹,如static_release,并在该文件夹中打开终端,执行cmake命令:
cmake -D CMAKE\_BUILD\_TYPE=RELEASE \
-D CMAKE\_INSTALL\_PREFIX=/usr/local \
-D BUILD\_SHARED\_LIBS=NO \
-D BUILD\_PNG=ON \
-D BUILD\_JASPER=ON \
-D BUILD\_JPEG=ON \
-D BUILD\_TIFF=ON \
-D BUILD\_ZLIB=ON \
-D WITH\_JPEG=ON \
-D WITH\_PNG=ON \
-D WITH\_JASPER=ON \
-D WITH\_TIFF=ON ..
可以仿照动态库的cmake命令,主要是添加BUILD_SHARED_LIBS=NO
,代表不编译动态库而是编译静态库,编译结束后就可以在/usr/local/lib/看到生成的一系列.a文件。
测试
安装完成后可以通过pkg-config opencv --modversion
查看opencv是否安装成功及版本号。这里需要说明的是在最新版的opencv4中,/usr/local/lib/pkgconfig下生成的是opencv4.pc,因此需要指定pkg-config opencv4 --modversion
才能看到相应信息。
测试代码可以仿照Ubuntu 18.04源码编译安装OpenCV 4.0流程开启摄像头/视频,或者像ubuntu 16.04 OpenCV3.2.0完全编译安装打开一张图片。
首先创建DisplayImage.cpp文件,输入:
#include <cv.h>
#include <highgui.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main( int argc, char\*\* argv )
{
Mat image;
image = imread( argv[1], 1 );
if( argc != 2 || !image.data )
{
printf( "No image data \n" );
return -1;
}
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0;
}
创建CMakeLists.txt 文件,输入:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV\_LIBS} )
在该文件夹下打开终端,执行:
cmake .
make
即可生成一个DisplayImage的执行文件,执行./DisplayImage test.jpg即可打开图片, test.jpg为该文件夹下放置的一张图像,也可以指定到其它路径中的图像。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)