文章目录

  • 前言
  • 一、Opencv的安装
  • 二、Ubuntu18.04下opencv的应用实例
    • 1、图片的显示
    • 2、摄像头的的使用
      • (1)获取摄像头的权限
      • (2)摄像头调用录制视频
      • (3)播放视频
  • 三、参考资料
  • 总结

前言

我们将学习Ubuntu18.04系统下Opencv的安装以及一些使用。

一、Opencv的安装

因为Opencv的使用以及学习需要桌面版本的Ubuntu,如果已经安装可跳过此步骤,如果是Server版本需要下载桌面组件。

sudo apt-get update  //更新源
sudo apt-get install ubuntu-desktop //安装桌面组件
sudo reboot //重启虚拟机

安装网址:https://opencv.org/releases/
1、 在Ubuntu18.04中网页打开该网站。下载的话建议下载次新版本,相对稳定,网上资料较多。点击 Sources 下载。


2、 ctrl+alt+T进入终端,安装相应的依赖环境

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libjasper-dev libdc1394-22-dev

3、 将下载的安装包复制一份到home目录下,方便接下来的操作。将下载的压缩包解压

unzip opencv-4.5.5.zip

4、 进入解压后的文件,并在该目录下新建一个build文件夹

cd opencv-4.5.5
mkdir build


5、 进入build路径下cmake

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

CMAKE_INSTALL_PREFIX: opencv的安装路径,是安装在/usr/local下的。
CMAKE_BUILD_TYPE: opencv的安装版本,这里默认安装Release。


6、 在build目录下make

sudo make -j2 //我这里是双线程,大家可以根据自己虚拟机的配置来


7、 在改目录下安装

sudo make install

8、 将opencv的库添加到系统路径,配置ld.so.conf文件

sudo vim /etc/ld.so.conf
//在打开的文件中加一行
include /usr/local/lib
并执行 sudo ldconfig  //使配置生效


9、 配置系统bash

sudo vim /etc/bash.bashrc
//再打开的文件末尾添加以下内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
//添加完之后执行以下命令,使配置生效
source /etc/bash.bashrc

10、 安装完成!

二、Ubuntu18.04下opencv的应用实例

1、图片的显示

1、 在目录下创建一个code文件夹并进入该目录

mkdir code
cd code

2、 在code目录下使用vim编辑器编写一个test.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;
}


3、 执行以下命令

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


4、 执行以下命令

./test  //执行输出文件


可以看到图片已经特效展示

2、摄像头的的使用

(1)获取摄像头的权限

  • 在windows系统下 win+r,输入services.msc,找到VMware USB Arbitration S……服务,启动服务。
  • 在虚拟机中点开设置,将USB控制器的“USB兼容性”设置为usb3.0
    -虚拟机中选择“可移动设备”,再选“Quanta USB2.0 VGA UVC WebCam”,最后点击连接即可。

(2)摄像头调用录制视频

1、 创建一个.cpp文件,输入代码

#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;
}

2、 输入以下命令编译生成可执行文件

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


可以发现正在使用电脑摄像头拍摄(因为我的摄像头坏了,所以没有拍摄效果)

(3)播放视频

1、 同理,也是需要一个.cpp 文件,将以下代码粘贴上去,编译运行即可。(在文件夹下要有视频)

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


可以正常播放视频!

三、参考资料

1、 https://blog.csdn.net/ssj925319/article/details/109231145?spm=1001.2014.3001.5501


总结

Opencv是一个很有趣的图像处理的开源库,在此之前也是在windows系统下用过,并没有在ubuntu系统下用过,没想过在ubuntu系统下挺麻烦的。当然,我们觉得麻烦也只是对linux的操作系统不熟悉罢了,毕竟我们都用惯了windows这种图形化的操作系统,希望通过不断的学习获取更大的进步!

Ubuntu18.04下Opencv的安装以及使用相关推荐

  1. Ubuntu18.04下Opencv的安装及使用实例

    本文主要介绍了在Ubuntu18.04系统下练习编译.安装著名的C/C++图像处理开源软件库Opencv 3.4.12(过程多,耗时长,需要耐心和细心) 目录 一.Opencv简介 二.Opencv安 ...

  2. Ubuntu18.04下的PCL安装(摸爬滚打)

    目录 Ubuntu18.04下的PCL安装 1.先安装Qt5,X11,OpenGL 1)安装Qt5 2)安装x11 3)安装OpenGL 4)安装libglut-dev 2.安装VTK(直接把pcl依 ...

  3. ROS系列——Ubuntu18.04下ros Melodic安装mavros过程中遇到问题及解决-定期更新版

    ROS系列--Ubuntu18.04下ros Melodic安装mavros过程中遇到问题及解决-定期更新版 问题 问题一:运行 wstool update -t src -j8 时,出错如下: 问题 ...

  4. 20230311给Ubuntu18.04下的GTX1080M安装驱动

    20230311给Ubuntu18.04下的GTX1080M安装驱动 2023/3/11 12:50 2. 安装GTX1080驱动 安装 Nvidia 驱动 367.27 sudo add-apt-r ...

  5. fftw3 嵌入式linux安装,Ubuntu18.04下快速的安装UHD与GnuRadio并连接USRP设备

    USRP的开发软件安装 USRP开发平台介绍 Ubuntu系统下安装流程 Ubuntu系统依赖的安装 安装UHD USRP开发平台介绍 USRP可以适用于Windows和Linux两种平台,同时支持的 ...

  6. Ubuntu18.04下Quagga的安装过程

    记录一下 Ubuntu18.04 虚拟机上 Quagga 的整个安装过程. 参考学习的链接

  7. Ubuntu18.04下realsense-ros的安装

    参考: RealSense D435i在Ubuntu18下配置过程_冰激凌啊的博客-CSDN博客 0 安装环境 系统:Ubuntu 18.04 ROS melodic 设备:Realsense D43 ...

  8. Ubuntu18.04下NVIDIA驱动安装

    安了一天,在网上找了无数教程也没能成功,就在准备换系统的时候发现了这篇文章,真的安装上了记录一下, 转自https://blog.csdn.net/fengyuechengshi495/article ...

  9. UBUNTU18.04下Jetson nx安装opencv4.5.1

    sudo cp ../../opencv_contrib-4.5.1/modules/xfeatures2d/include/opencv2/* -r ../../opencv_contrib-4.5 ...

最新文章

  1. tomcat配置访问项目时不需要加项目名称
  2. Mysql字符集之utf8和utf8mb4的使用问题
  3. 10.10SSD安装盘clover 下开启trim功能
  4. 程序员过关斩将--领导说我的类的职责不单一
  5. [每日编程]求 largest Number - 给出一组非负整数,求这些非负整数可以拼接出的最大数字...
  6. BZip2Codec压缩、Map端压缩控制、Reduce端压缩控制……都在这份Hadoop整合压缩知识点里了!...
  7. 游戏开发之C++多继承及虚继承(C++基础)
  8. logback日志pattern_Logback 配置文件这么写,TPS提高10倍
  9. ssh连接本地虚拟机
  10. 算法分析与设计实验报告——实现分治法求解棋盘覆盖问题
  11. 计算机组成原理——存储器(一)
  12. win7资源管理器总是崩溃
  13. 【报告分享】潮流涌动下的追潮众生与消费洞察-阿里妈妈.pdf(附下载链接)...
  14. WIN10 mscomm32注册,亲测可用
  15. Vue3中watch和watchEffect监听的用法
  16. SSL数字证书下载流程是怎么样的
  17. 小米5 android版本,小米 5 迎来 MIUI9.6.1.0 稳定版更新,将升级安卓 8.0 支持 LDAC
  18. 了解寄存器: EBP寄存器
  19. Python快速学习第八天
  20. 原创 基于微信小程序毕业设计题目选题课题 图书馆图书借阅小程序的设计与实现(1)首页

热门文章

  1. 华为自动驾驶技术超越特斯拉,为中国新能源汽车产业注入强心针
  2. 数字后端基本概念介绍——Litho Grid
  3. Idea方法注释模板(参数注释出类型和名称)
  4. 买了根mini DP转DVI的数据线
  5. nginx同一端口多域名转发
  6. 每天一剂Ext良药(二)
  7. 巧妙利用CSS3实现太阳系行星公转运动轨迹
  8. 小米2S 評測 跑分、相機試拍、電量-為發燒而生
  9. 前端支付宝授权h5页面完成支付
  10. 【Java笔记】mysql各个版本驱动jar包下载