最初对ubuntu20.04以及opencv和python运行环境一窍不通,折磨了好几天,虚拟机重建了好几次,各个帖子的方法都跑遍了。最后终于装上,记录一下,免得搞忘。
先总结下之前的问题:推测之前的问题都在于我先入为主安装了vscode上的Python,但其实ubuntu20.04他是自带了Python3.8.10的,最后导致在程序运行中,可能是出现了python定位错误,运行环境不一致等情况,导致后面安装的诸如dlib库,scipy库等找不到对应运行环境和执行路径,从而导致编译程序不能正确调用对应库。
重新安装ubuntu20.04后,或者选择完全卸载vscode及其已经安装的组件内容。根据个人习惯选择语言。可以先进入ubuntu20.04自带的“语言支持”软件,先下载安装简体中文语言,并全机应用。
Ubuntu上的下载源默认为外国源,因此在国内下载的话速度会很慢。为了后续下载安装过程加快,我们需要更换为国内源。
Ubuntu20.04上可以通过“软件和更新”图标。选择“下载自”,并点击“选择最佳服务器”,会自动根据所在位置选择最快的服务器并配置下载源,可以大大提高下载速度和准确度。这里我选用的是腾讯源。
接下来就可以进行完成人脸重要组件的下载安装阶段了。
安装opencv
这里是参考了csdn上《ubuntu18.04安装opencv4.5.4》这篇文章。
首先确保有cmake和make编译工具,可用以下命令安装。
sudo apt-get installcmake
sudo apt-getinstall make
一路按Y同意即可,若不确定是否安装过这两个编译工具,可以采用以下命令查看版本号,这类命令在ubuntu系统中是大同小异的。
sudo make --version
sudo cmake --version
至于为什么要安装make工具?make是一个自动化编译工具,但是它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。对于一个工程文件而言,我们使用make指令就能完全的编译整个工程的源文件,相比于使用gcc来编译,效率就大大提高了。但是需要编写一个规则文件,Make工具依据它来批量处理编译,这个文件就是Makefile文件。但是Makefile文件编写过程也很麻烦,于是需要用到cmake这一跨平台编译工具,辅助完成编写。当然,ubuntu系统发展至今逐渐完善,这些相关编译工具也是不断进行功能升级,更加方便快捷和自动化。
安装opencv依赖环境
sudo apt-get installbuild-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-devlibswscale-dev libtiff5-dev
sudo apt-get installlibcanberra-gtk-module
sudo apt-get installpkg-config
sudo apt-get installlibopencv-dev#很关键,否则程序总会报错,找不到include的头文件
这个过程也是由系统自动从下载源中抓取,下载,安装。一路按Y同意即可。
如果出现不能定位安装包一类的问题。可以从更换下载源,检查安装包名称是否发生变化等方面着手。当然也可以将报错信息复制出来,并搜索解决方案。
准备opencv4.5.4的安装包。
可以去官网下载,https://opencv.org/releases/,也可以选择我这个百度云链接。链接:
下载完成后,解压并复制到根目录。如果是从windows平台上下载的,也可以直接将压缩包从windows,通过拖动的方式,拖进虚拟机(vmware workstation已安装了vm-tools)根目录中。右键点击提取到即可。
编译并安装
解压完成后,进入opencv-4.5.4文件夹,在该目录下新建一个build文件夹(我已建好)。
新建完成后,进入build文件夹,打开终端执行cmake命令(这里就要用到cmake工具,不过也仅此而已,不需要你手动编写了):已经选定了安装位置,
cmake -DCMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..
等待编译完成后执行命令
sudo make -j4 #-j4只是为了多线程编译,提高编译速度。耐心等待
sudo make install #安装
环境配置
将opencv4.pc文件复制到pkgconfig文件夹里
sudo cp/usr/local/lib/pkgconfig/opencv4.pc /usr/lib/pkgconfig/
配置环境变量
sudo gedit/etc/ld.so.conf.d/opencv.conf #1.打开后可能是空文件,在文件内容最后添加/usr/local/lib
sudo ldconfig #2.更新系统库
sudo gedit/etc/bash.bashrc #3.配置bash,在末尾添加 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig source ~/.bashrc #4.更新bash文件
sudo updatedb
如果updatedb命令找不到,说明缺少mlocate包,执行
sudo apt-get install mlocate #继续安装即可
如果当前用户权限不够,请先进入root
安装测试
pkg-config opencv4--modversion
响应出版本号即为成功
也可以进如opencv文件夹中的官方示例(samples),我的路径为/opencv-4.5.4/samples/cpp/example_camke
可直接运行一下命令
cmake .
make
./opencv_example
如果打开是以下界面,但是是黑屏,恭喜你,至少opencv是安装成功了。
但笔记本自带摄像头未打开,可以考虑检查这几个方面
1.虚拟机→可移动设备→要开启自带摄像头
2.windows下:运行→services→vmware usb 使其要处于启动状态
3.要注意usb兼容性,虚拟机→设置→usb控制器,usb2.0不行试usb3.0
4.终端错误是can’t open cameraby index,要考虑在命令行前加上sudo,提高权限
解决这些问题应该就可以了。
也可在/cpp文件夹中,选择你想编译运行的示例
g++ A.cpp -o B`pkg-config –cflags –libs opencv4`#输出执行文件B可完成文件编译,再使用
./B # 即可完成执行,此处A和B均是你选择的文件
参考《ubuntu18.04安装opencv》
https://blog.csdn.net/Murray__/article/details/121729438?ops_request_misc=&request_id=&biz_id=102&utm_term=Ubuntu18.04%E5%AE%89%E8%A3%85Opencv4.5&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-121729438.142^v74^wechat_v2,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187
从pip3,setuptools,cmake编译工具等工具库重新安装,
安装pip3,python中所需要的各种工具库,工具包可以用pip工具统一管理。如果安装的python3版本,则建议使用pip3工具,对python3更加适配,避免不必要的麻烦。
命令为
sudoapt install python3-pip
sudopip3 –version # 检查pip3安装版本
正好适合ubuntu20.04自带的python3.8版本,尤其要注意这些工具包之间的版本适配。否则可能出现明明装上了工具包,却还是不断报错缺少工具包。
安装dlib库
pip3 install dlib
成功安装dlib-19.24.0
继续安装numpy,
如上,pip3工具的下载源也是国外的,所以在国内下载就会很慢。我们先给pip3统一换个国内源,自动写入以下文件
pip configset global.index-url https://mirrors.aliyun.com/pypi/simple
同样用pip3安装指令,下载速度快了很多,最终安装版本是numpy-1.24.2,
pip3安装scipy,注意版本适应
sudopip3 install scipy
Ps:
也可以通过whl文件进行安装(具体方式站内大佬都有很多讲述),whl文件其实就是包编译好的文件格式,细心的同学也许已经发现了在使用pip安装scipy库的时候就是下载的whl文件来进行安装的,那为啥还需要单独使用whl文件来安装包呢?
单独下载whl文件来进行安装,是因为有时候使用pip安装包的时候,下载并不是whl文件而是源码,下载完源码之后需要在本地进行编译成whl文件然后再进行安装,但是有时候因为本地的环境问题会导致编译出错,有的错误解决起来会比较麻烦,这时候采用whl文件来进行安装能够避免这类问题的发生。另外采用whl文件独立安装,还可以选择scipy的对应版本,解决版本冲突带来的各种问题。
另外,pip3安装scipy时,似乎会一并安装合适版本的numpy。如果这两个工具包之间版本不合适,似乎会影响最终的安装结果。
最后python下运行opencv,需要相关的cv2模组。
cv2模组在pip3中名为opencv-python 因此
sudopip3 install opencv-python
至此,相关的人脸检测的工具库大抵上是安装完成了。当某些程序需要继续补充时,我们再继续添加补充安装即可。
第一次写,写的不好,大家多多包涵。