目录
一、安装opencv
1.下载opencv3.4.12
2.使用cmake安装opencv
3、安装
4、配置环境
二、图片
三、视频
1.虚拟机获取摄像头权限
2.播放视频
3.打开摄像头录制视频
四、总结
下载网站:OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记
可以在此网站下载自己所需的版本压缩包
下载完后将压缩包复制到Home里
然后解压unzip opencv-3.4.12 ,然后home目录里会有opencv-3.4.12文件。
进入解压后的文件:cd opencv-3.4.12并更新,更新过程中可能出现如下问题
用如下命令解决问题一:
用一下命令解决:GPG error
解决该问题的方法是执行sudo vi /etc/resolv.conf,将nameserver设置为8.8.8.8然后再次sudo apt-get update就不会报错了
命令安装cmake:sudo apt-get install cmake
此处问题解决方法参考(16条消息) E: Could not get lock /var/lib/dpkg/lock-frontend - open (11:_哪有天生的学霸,一切都是厚积薄发的博客-CSDN博客 安装依赖库
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
解决办法参考(16条消息) E: Unable to locate package libjasper-dev的解决办法(亲测可以解决)_爱跑步的mango的博客-CSDN博客 创建build文件夹并进入mkdir build
cd build
使用cmake编译参数
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
如果大家在该命令后出现了错误Configuring incomplete, errors occurred等,可以返回opencv-3.4.12用命令rm -rf build删除build文件再重新建立build文件打开,然后重新执行cmake命令。
sudo make install
修改opencv.conf文件,将/usr/local/lib输入进去并保存。
配置库:sudo ldconfig
配置bash,修改 bash.bashrc 文件:sudo gedit /etc/bash.bashrc
末尾添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
保存并退出,执行以下命令
source /etc/bash.bashrc
sudo updatedb
再通过pkg-config --modversion opencv查看安装的opencv版本
表示安装成功
新建文件夹:mkdir code并进入:cd code
编写程序test1.cpp:gedit test1.cpp
test1.cpp
编译文件:(c++文件的编译)g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`(若建的.c文件就将g++换为gcc)
要提前在code文件夹下放入一张名为lena.jpeg的图片
执行命令:./test1结果如下
快捷键win+R,输入services.msc
在vMware中点击虚拟机->设置->USB控制器->将USB兼容性设置为3.0
点击虚拟机右下角的小摄像头右击->连接
在code下创建test2.cpp文件:gedit test2.cpp
准备一个视频(MH.mp4)放在code下
./test2
如果在./test1和./test2命令后出现
可执行命令:sudo apt install libcanberra-gtk-module可解决
code下创建test3.cpp文件
编译test3.cpp文件
g++ test3.cpp -o test3 `pkg-config --cflags --libs opencv`
安装opencv过程较复杂,遇到报错需要不断尝试解决,更新过程出错的话大家可以再次输入更新命令等待,多重复几次!!!这个真的有用。由于昨天用电脑管家删了一个软件,导致D盘所有文件都被删除,只好重置,所以重新装了VMware,Ubuntu发现新装的系统下载opencv及其顺畅只有更新会报错然后重复了两次就好了,所以一般安装过程像我前面那样那么复杂应该是删除过vmware且没有删除干净。