关于Manjaro,使用这个系统除了符合本工科男的审美外,更重要的是资源占用真的很少,所以才折腾安装这个,先上一张桌面。

  • 正文开始

安装Manjaro

安装Manjaro的教程比较多,这里就不多阐述了,传送们走起
Manjaro安装传送门
感谢ArcueidCroft

下面是安装opencv4

参照官方提供的安装说明,我们只需要把opencv和其依赖库就可以
manjaro下安装软件的指令是sudo pacman -S xxx。
安装opencv:sudo pacman -S opencv

~ >>> sudo pacman -S opencv                                                                                                  [1]
警告:opencv-4.4.0-1 已经为最新 -- 重新安装
正在解析依赖关系...
正在查找软件包冲突...软件包 (1) opencv-4.4.0-1全部安装大小:  101.35 MiB
净更新大小:    0.00 MiB:: 进行安装吗? [Y/n] Y

安装官方说明
opencv安装官方说明
如果看不懂英文可以用谷歌浏览器翻译下,如图

依赖库说明(网上查资料+自己理解)
build-essential:主要用于建立C/C++的编译环境,由于Manjaro plasme已经自带gcc和g++,所以这步可以省略,而且在pacman下貌似没有这个依赖库。
cmake:编译生成可执行文件强大的工具,全平台可用,建议安装。
git:一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容,一个开放源码的版本控制软件。
libgtk2.0-dev:GTK +是用于创建图形用户界面的多平台工具包。GTK +提供了一整套的小部件,适用于从小型一次性工具到完整的应用程序套件的项目,个人理解就是图形界面需要依赖这个兄弟。
pkg-config:这个工具是你在编译应用程序和库时使用的辅助工具。它可以帮助您在命令行上插入正确的编译器选项,以便应用程序可以使用。个人理解就是,帮你找到编译程序依赖库的重要工具。
然后就是参照了这个博客,按照这个安装依赖库即可
Opencv依赖库安装说明

但只参照了依赖库部分,后面的指令cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local …是我太菜了,在manjaro下好像并没有起作用,至今没找到原因在哪。

那么我的方法就是跳过这一步环境配置,用cmake-gui来完成配置工作

~ >>> cd /usr/share/opencv4/samples                                                                                        [130]
/usr/.../opencv4/samples >>> mkdir build
/usr/.../opencv4/samples >>> cd build                                                                                      [130]
/usr/.../samples/build >>> cmake-gui


其中where is the source code是指定源码的目录**/usr/share/opencv4/samples**,where to build the binaries是指定编译生成可执行文件**/usr/share/opencv4/samples/build**,也就是build的目录 。
完成以上配置后,点击configure编译,完成后点击Generate完成编译。
补充一句:manjaro中的opencv*
源码位置:在/usr/share/opencv4中,具体如果不知道的话可以通过以下指令找到他sudo pacman -Ql opencv-samples。
头文件位置:在/usr/include/opencv4
依赖库:在/usr/lib64。

编译完成后

/usr/.../samples/build >>> cd /usr/share/opencv4/samples/build/cpp                                                         [130]
/usr/.../build/cpp >>> ls
/usr/.../build/cpp >>> ls
CMakeFiles                        example_cpp_falsecolor                   example_cpp_polar_transforms
cmake_install.cmake               example_cpp_fback                        example_cpp_qrcode
example_cpp_3calibration          example_cpp_ffilldemo                    example_cpp_segment_objects
example_cpp_application_trace     example_cpp_filestorage                  example_cpp_select3dobj
example_cpp_bgfg_segm             example_cpp_fitellipse                   example_cpp_simd_basic
example_cpp_calibration           example_cpp_grabcut                      example_cpp_smiledetect
example_cpp_camshiftdemo          example_cpp_image_alignment              example_cpp_squares
example_cpp_cloning_demo          example_cpp_imagelist_creator            example_cpp_stereo_calib
example_cpp_cloning_gui           example_cpp_imagelist_reader             example_cpp_stereo_match
example_cpp_connected_components  example_cpp_inpaint                      example_cpp_stitching
example_cpp_contours2             example_cpp_intelligent_scissors         example_cpp_stitching_detailed
example_cpp_convexhull            example_cpp_intersectExample             example_cpp_text_skewness_correction
example_cpp_cout_mat              example_cpp_kalman                       example_cpp_train_HOG
example_cpp_create_mask           example_cpp_kmeans                       example_cpp_train_svmsgd
example_cpp_dbt_face_detection    example_cpp_laplace                      example_cpp_travelsalesman
example_cpp_delaunay2             example_cpp_letter_recog                 example_cpp_tree_engine
example_cpp_demhist               example_cpp_lkdemo                       example_cpp_videocapture_basic
example_cpp_detect_blob           example_cpp_logistic_regression          example_cpp_videocapture_camera
example_cpp_detect_mser           example_cpp_mask_tmpl                    example_cpp_videocapture_gphoto2_autofocus
example_cpp_dft                   example_cpp_matchmethod_orb_akaze_brisk  example_cpp_videocapture_gstreamer_pipeline
example_cpp_digits                example_cpp_minarea                      example_cpp_videocapture_image_sequence
example_cpp_dis_opticalflow       example_cpp_morphology2                  example_cpp_videocapture_intelperc
example_cpp_distrans              example_cpp_neural_network               example_cpp_videocapture_openni
example_cpp_drawing               example_cpp_npr_demo                     example_cpp_videocapture_starter
example_cpp_edge                  example_cpp_opencv_version               example_cpp_videowriter_basic
example_cpp_ela                   example_cpp_pca                          example_cpp_warpPerspective_demo
example_cpp_em                    example_cpp_peopledetect                 example_cpp_watershed
example_cpp_facedetect            example_cpp_phase_corr                   Makefile
example_cpp_facial_features       example_cpp_points_classifier
/usr/.../build/cpp >>> ./example_cpp_ela

随便挑一个样例运行一下看。

好了,证明opencv样例的可执行文件完成了。

接下来重头戏

用cmake运行自己编写的程序

初次接触linux真的走了好久的弯路,用cmake在manjaro上跑opencv4的程序踩过了无数的坑。
首先我们要明白一点,cmake的一些工作原理。用cmake编译程序时,需要在CMakeLists.txt里制定编译器、头文件的路径、源文件的路径、依赖库等信息。开始配置的时候,我在/home/用户名/Documents/opencv_test/建立了自己的opencv_test.cpp文件,编写了打开一张图片的程序,如下:

#include<iostream>
#include"opencv2/opencv.hpp"using namespace std;
using namespace cv;
int main(void)
{Mat image;image=imread("这里写你的图片路径");//打开一张图片namedWindow("Show Image",0);//定义窗口名称imshow("Show Image",image);//显示一张图片waitKey(0);
}

按照以下cmake的教程编写CMakeList.txt文件
CMakeLists.txt详细说明
编写如下:

cmake_minimum_required(VERSION 2.8)
project(opencv_test)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
option( OPENCV_GENERATE_PKGCONFIG ON)
include_directories("/usr/include/opencv4/")
aux_source_directory(.DIR_SRCS)
add_executable(opencv_text ${DIR_SRCS})

cmake . 满屏错误。。。
后来查了opencv官网的安装说明
opencv gcc cmake配置教程
看到了opencv官方给的CMakeLists.txt配置文件说明

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

然后在里面加入自己的依赖库和源目录
如下,可以通过vim CMakeLists.txt对文件进行编辑

# cmake needs this line
cmake_minimum_required(VERSION 2.8)# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)# Define project name
project(opencv_test)# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
# Declare the executable target built from your sources
add_executable(opencv_test2 hello.cpp Myprintf.cpp)# Link your application with OpenCV libraries
target_link_libraries(opencv_test2 ${OpenCV_LIBS})

然后

cmake .
make

再执行./opencv_test,运行成功!


先用着,后面研究下怎么在VS code下交叉编译。

Manjaro下Opencv4+CMake安装和编译指南(完整版)相关推荐

  1. Centos 7下Nagios的安装及配置(完整版)

    Centos 7下Nagios的安装及配置(完整版) 简介 Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能.本文章将介绍其安装方法和详细的配置方法. nag ...

  2. python编程入门指南 代码库在哪下-致Python初学者 Anaconda入门使用指南完整版

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...

  3. python入门必备指南-致Python初学者 Anaconda入门使用指南完整版

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...

  4. python人门指南小说-致Python初学者 Anaconda入门使用指南完整版

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...

  5. 服务器uefi装系统教程,安装UEFI系统教程(完整版

    <安装UEFI系统教程(完整版>由会员分享,可在线阅读,更多相关<安装UEFI系统教程(完整版(8页珍藏版)>请在人人文库网上搜索. 1.初出茅庐,有不足之处,请指教一.请认真 ...

  6. 服务器uefi装系统教程,安装UEFI系统教程(完整版)

    <安装UEFI系统教程(完整版)>由会员分享,可在线阅读,更多相关<安装UEFI系统教程(完整版)(8页珍藏版)>请在人人文库网上搜索. 1.初出茅庐,有不足之处,请指教一.请 ...

  7. Synopsys MetaWare for Linux 安装与编译指南

    目录 MetaWare简介 安装与编译前准备 安装GCC7.3 增加你的芯片文件 编译ev_runtime 编译cnn_tools 编译examples MetaWare简介 MetaWare是一个针 ...

  8. Windows下的cmake安装与使用

    Cmake 介绍 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件.只是 CMake 的组态档取名 ...

  9. linux php mysql安装完整版本_Linux下安装PHP+MySQL+Apache完整版

    首先下载httpd-2.2.9.tar.gz.MySQL-5.0.41.tar.gz.php-5.2.6.tar.gz.autoconf-2.61.tar.gz.freetype-2.3.5.tar. ...

  10. 第十八篇 Linux环境下常用软件安装和使用指南

    提醒:如果之后要安装virtualenvwrapper的话,可以直接跳到安装virtualenvwrapper的方法,而不需要先安装好virtualenv 安装virtualenv和生成虚拟环境 安装 ...

最新文章

  1. POJ - 3186 Treats for the Cows DP
  2. c++框架有哪些_Java Mybatis框架入门教程_v20200726
  3. oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
  4. Python操作mysql数据库查询操作时提示“unread-result-found”
  5. cf831D(dp)
  6. Mac下显示隐藏文件
  7. 中国微型计算机分省市产量数据统计,2017年6月中国微型计算机设备产量统计数据分析...
  8. Deep Residual Network
  9. hihocoder第220周-一道拧巴的题
  10. 软件license授权加、解密,软件注册工具(2)
  11. 电风扇计算机控制系统,语音识别电风扇控制系统设计.doc
  12. WIN7共享WIFI
  13. 【期末划重点】数据库速成
  14. Photoshop2022全版本软件安装包(附图文教程、windows\mac系统全版本软件)
  15. 如何使用视频压缩软件,压缩视频大小 ?
  16. 【面试题】对闭包的理解?什么是闭包?
  17. 运载火箭弹道飞行程序matlab,运载火箭弹道与控制理论基础
  18. File对象和IO流
  19. node.js实现编码转GBK转UTF8,中文乱码方案!!!
  20. 美国普渡大学 计算机科学,普渡大学计算机科学研究生专业排名专家内幕解读总汇...

热门文章

  1. NI CompactRIO嵌入式系统开发流程总结
  2. 【工业智能】天泽智云带你解读工业智能热门科技 – 大数据、工业互联网、云计算、边缘计算、CPS
  3. java 纳秒 毫秒,秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)及Java获得
  4. Hive教程-详细全部
  5. 【设计】松本行弘的程序世界
  6. Vue框架Element UI+Mint UI教程汇总
  7. windowsGHO镜像系统winXPwin7win8win10下载
  8. ectouch v1 thinkphp的搜索问题
  9. java坦克大战墙_java实现坦克大战(功能丰富)
  10. 黑龙江省谷歌高清卫星地图下载