目录

一、认识 OpenCV

二、安装 OpenCV(1)安装包

①下载 OpenCV 3.4.11 数据包

②解压缩包

③使用 cmake 安装 opencv

④使用 make 创建编译

⑤安装

(2)配置环境

1.修改opencv.conf文件

2.更新系统共享链接库

​3.配置 bash

三.使用实例-图片

四.使用实例-视频

(1)虚拟机获取摄像头权限

(2).播放视频

(3).录制视频

五.总结

六.参考文献


一、认识 OpenCV

开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。
OpenCV的应用领域包括:

2D和3D功能工具包
运动估计
面部识别系统
手势识别
人机交互
移动机器人
动作理解
物体识别
分割和识别
实体影像立体视觉:来自两个摄像机的深度感知
运动中的结构(SFM)
运动跟踪
增强现实
为了支持上述一些领域,OpenCV包括一个统计机器学习库,其中包含:

提升(Boosting)
决策树学习
梯度提升树
期望最大化算法
k最近邻算法
朴素贝叶斯分类器
人工神经网络
随机森林
支持向量机(SVM)
深层神经网络(DNN)

二、安装 OpenCV

(1)安装包

①下载 OpenCV 3.4.11 数据包

国内快速下载地址:OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记

注意的是用虚拟机的浏览器

②解压缩包

将下载的压缩包双击打开,然后将里面的文件提取到主目录

unzip opencv-3.4.11.zip

③使用 cmake 安装 opencv

首先进入解压后的文件夹:opencv-3.4.11

cd opencv-3.4.11

首先进入 root 用户,并更新一下。

sudo su

sudo apt-get update

然后在安装cmake

sudo apt-get install cmake

安装依赖库

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev

我安装的时候出现了错误,无法定位软件包‘libjasper-dev,所以把安装命令的那个删除就可以。

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev

在创建build文件夹

mkdir build

cd build

使用 cmake 编译参数,或者使用第二条默认参数,都可以的。

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

cmake ..

④使用 make 创建编译

仍然是在 build 文件夹下进行。

sudo make

开始编译

编译完成

⑤安装

sudo make install

安装没有报错即可安装完成

(2)配置环境

1.修改opencv.conf文件

打开后添加安装路径:/usr/local/lib

sudo gedit /etc/ld.so.conf.d/opencv.conf

保存后有警告信息不用担心,正常情况

2.更新系统共享链接库

sudo ldconfig


3.配置 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

接下来查看opencv的版本信息

pkg-config --modversion opencv

安装完成。

三.使用实例-图片

代码编写:

创建一个代码存放文件夹code,然后进入文件夹。

mkdir code

cd code

创建一个 test1.cpp 文件。

gedit test1.cpp

然后复制代码进去

test1.cpp

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{CvPoint center;double scale = -3; IplImage* image = cvLoadImage("lena.jpg");argc == 2? cvLoadImage(argv[1]) : 0;cvShowImage("Image", image);if (!image) return -1;     center = cvPoint(image->width / 2, image->height / 2);for (int i = 0;i<image->height;i++)for (int j = 0;j<image->width;j++) {double dx = (double)(j - center.x) / center.x;double dy = (double)(i - center.y) / center.y;double weight = exp((dx*dx + dy*dy)*scale);uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);ptr[0] = cvRound(ptr[0] * weight);ptr[1] = cvRound(ptr[1] * weight);ptr[2] = cvRound(ptr[2] * weight);}Mat src;Mat dst;src = cvarrToMat(image);cv::imwrite("test.png", src);cvNamedWindow("test",1);      imshow("test", src);cvWaitKey();return 0;
}

编译文件:

执行命令:g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`

在同文件夹下准备一张照片,文件名:leng.jpg

输出结果:

执行命令:

./test1

可以看到由lena.jpg生成了一个test.png,呈现效果不一样

四.使用实例-视频

(1)虚拟机获取摄像头权限

使用快捷键 Win + R ,输入 services.msc ,并回车。

找到 VMware USB Arbitration S… 服务,确保启动了。

点击 “ 虚拟机 ” ,然后点击 “ 设置(S)… ”。

选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.1 ” ,并点击确定。

选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ IMC Networks Integrated Camera
” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ”

当虚拟机右下角摄像头图标有小绿点就成功。

(2).播放视频

创建一个test2.cpp文件

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{//从摄像头读取视频VideoCapture capture("man.mp4");//循环显示每一帧while(1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧if(frame.empty())//播放完毕,退出break;imshow("读取视频帧",frame);//显示当前帧waitKey(30);//掩饰30ms}system("pause");return 0;
}

.如果语句:VideoCapture capture(0),后面的参数设置为 0 ,则从摄像头读取视频并循环显示每一帧;如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。
  .while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像,有关 Mat 详解请看:OpenCV中Mat数据结构
  .语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms ,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。

准备一个小视频,我准备的是man.MP4

编译test2.cpp

g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`

输出结果。

./test2

(3).录制视频

创建test3.cpp

复制代码进去

/*********************************************************************
打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
*********************************************************************/
#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;int main()
{//打开电脑摄像头VideoCapture cap(0);if (!cap.isOpened()){cout << "error" << endl;waitKey(0);return 0;}//获得cap的分辨率int w = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_WIDTH));int h = static_cast<int>(cap.get(CV_CAP_PROP_FRAME_HEIGHT));Size videoSize(w, h);VideoWriter writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, videoSize);Mat frame;int key;//记录键盘按键char startOrStop = 1;//0  开始录制视频; 1 结束录制视频char flag = 0;//正在录制标志 0-不在录制; 1-正在录制while (1){cap >> frame;key = waitKey(100);if (key == 32)//按下空格开始录制、暂停录制   可以来回切换{startOrStop = 1 - startOrStop;if (startOrStop == 0){flag = 1;}}if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘{break;}if (startOrStop == 0 && flag==1){writer << frame;cout << "recording" << endl;}else if (startOrStop == 1){flag = 0;cout << "end recording" << endl;}imshow("picture", frame);}cap.release();writer.release();destroyAllWindows();return 0;
}

编译test3.cpp

g++ test3.cpp -o test3 `pkg-config --cflags --libs opencv`

输出结果。生成了一个 .avi 文件,并不断生成帧。(寝室有点黑,录制的是视频,博客上传的是一个截图)

./test3

到此opencv安装使用就结束了。

五.总结

在Ubuntu下安装OpenCV,确实大麻烦了,各种步骤繁杂,而 OpenCV 的使用确实有意思,可以应用在许多领域,比如人脸识别、摄像监控等等,本次实验也是参考了学长的博客来书写的,还需要自己慢慢的学习。

六.参考文献

Ubuntu18.04下OpenCV3.4.11的安装及使用示例_ssj925319的博客-CSDN博客

OpenCV - 搜狗科学百科

OpenCV3.4.11的安装及使用示例相关推荐

  1. gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例

    gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例 文章目录 gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例 一.用gcc生成静态库和动态库 ( ...

  2. Ubuntu 16.04下opencv 3.4.11 的安装及使用示例

    目录 一.安装Opencv 1.安装包 2.配置环境 二.使用示例----图片 三.使用示例----视频 1.虚拟机获取摄像机权限 2.播放视频 3. 录制视频 四.总结 五.参考内容 一.安装Ope ...

  3. gcc生成静态库和动态库,以及OpenCV3.4.11的安装和实例

    文章目录 一.用gcc生成静态库和动态库 (1).hello使用库实例 1.创建目录并编写hello代码 2.gcc编译得到.o文件 3.静态库的使用 4.动态库的使用 5.静态库与动态库的对比 (2 ...

  4. Ubuntu18.04系统下,图像处理开源软件库 Opencv3.4.11的安装、编译及应用初步

    "学了opencv,妈妈再也不会担心你不会图像编程啦!" 文章目录 "学了opencv,妈妈再也不会担心你不会图像编程啦!" 前言 一.opencv-3.4.1 ...

  5. 【嵌入式开发系统04】Unbuntu下图像处理开源软件库 Opencv3.4.11的安装、编译及应用初步

    本文目的是主要介绍了怎样安装opencv,如何用opencv编译程序打开一个图片或者摄像头等,并为之后的人脸识别系统打了基础. 文章目录 (一)什么是Opencv? (二)Opencv的下载 1.安装 ...

  6. 基于Ubuntu18.04下的OpenCV3.4.11的安装及摄像头使用教程

    目录 一.安装OpenCV3.4.11 1.1 安装包下载并解压 1.2 安装opencv 1.3 环境配置 二.Linux的图片编程 三.OpenCV关于摄像头的使用 3.1 虚拟机获取摄像头权限 ...

  7. Ubuntu下OpenCV的安装及使用示例

    文章目录 一. 认识OpenCV 二. 安装OpenCV (1)OpenCV安装包 (2)解压安装包 (3)使用cmake安装opencv (4)使用make创建编译 (5)安装 (6)配置环境 三. ...

  8. Ubuntu 下OpenCV的安装及使用示例

    目录 一.安装OpenCV 1.下载安装包 1)下载OpenCV数据包 2)使用cmake安装opencv 4)使用make创建编译. 5)安装 2.配置环境 二.使用示例--图片 三.使用示例--视 ...

  9. Ubuntu18.04 下图像处理开源软件库Opencv3.4.16的安装及使用

    文章目录 一.安装Opencv3.4.16 1.安装Ubuntu图形界面 2.下载Opencv3.4.16安装包 3.使用cmake安装opencv 4.使用make创建编译 5.配置环境 6.查看o ...

最新文章

  1. Python中str.replace()的使用方法
  2. linux ubuntu 切换到超级用户失败的解决办法(su 认证失败)
  3. adb logcat介绍
  4. Express实现路由分发控制、RESTful API
  5. 栈和队列之用一个栈实现另一个栈的排序
  6. redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper
  7. 关于栈的链式存储结构
  8. Git : 每一行命令都算数
  9. 前后端开发的心得体会_社招后端三面总结以及学习经验感言(操详细)
  10. html 将盒子固定浏览器,浏览器默认css样式表 css之左盒子固定,右盒子自适应的一种实现方式...
  11. php 点击菜单栏只刷新局部,layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法...
  12. 使用 flowplayer 播放视频
  13. java digester map_Digester学习笔记
  14. 【面试宝典】Java八股文之多线程并发面试题
  15. java下载m3u8转ts合成mp4
  16. yahoo邮箱foxmail收发
  17. centos安装mysql5.7.19报 error while loading shared libraries: libaio.so.1
  18. J2EE重要的技术架构图
  19. 复制知乎专栏文章的方法
  20. 【HTPC】第一期jellyfin windows版使用显卡硬件转码

热门文章

  1. 论文阅读3:Smart Greybox Fuzzing 智能灰盒模糊测试
  2. 高中数学知识点总结汇总归纳:集合及其运算
  3. 手机CAD看图正确使用教程!
  4. 【M/M/m/∞/∞/FCFS的排队系统仿真】
  5. 在线SEO文章伪原创同义词交换工具PHP源码
  6. 关于产品的一些思考——360之360云盘
  7. python刚入门的童鞋,按照这样学一个月就能开始月赚3000+
  8. 【U8】客户端登录提示不能装载通讯模块
  9. MySql......
  10. MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置