目录

一、认识 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. Kafka如何在千万级别时优化JVM GC问题?
  2. Light-Head R-CNN: In Defense of Two-Stage Object Detector
  3. C++实现Linux下弹出U盘的方法
  4. Python中的运算符
  5. 聊一聊Yarp结合Nacos完成服务发现
  6. 6 个珍藏已久 IDEA 小技巧,这一波全部分享给你!
  7. python求度分布的程序
  8. 对于scanf,strcpy等函数报4996错误的粗暴而简单解决办法
  9. L1-018 大笨钟 (10 分) — 团体程序设计天梯赛
  10. 零零碎碎写的脚本(四)自动监控某系统服务状态并警报
  11. 小程序对实体行业转型有何影响?
  12. Maven仓库的理解及配置
  13. 9年经验,总结SEO职业瓶颈
  14. iOS开发之颜色渐变
  15. 麻将编程c语言,C语言麻将算法(胡牌算法)
  16. 次世代3D建模的制作流程与制作时间,一个模型就上万,钱真不好拿
  17. doc与docx批量互转宏代码
  18. 了解---研究生发表论文的级别分类
  19. 扑克牌移动 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
  20. promise.all的使用

热门文章

  1. java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统
  2. JavaWeb第七天
  3. Lighthousenbsp;Partners赞助的区…
  4. 印花增稠剂的发展历程
  5. Python:第10章文件操作 课后习题
  6. 机器学习算法-PageRank(排序)
  7. 使用do-while循环结构实现:计算1~50中是7的倍数的数值之和并输出
  8. 如何保障IT信息运维管理安全
  9. 【原创】彼得德鲁克《管理的实践》札记(九)
  10. C语言-简单的学生成绩统计输入输出