文章目录

  • 前言
  • 一、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. 恢复Opera11.50地址栏的下拉列表按钮
  2. TreeView控件之,后台构建TreeView(WinForm小程序)
  3. @Test的作用以及Testcase和TestSuite的用法
  4. android真机调试看不到logcat信息
  5. python 类的简单实用和定义
  6. Bailian4018 子串【字符串】
  7. 7-8 阅览室 (20 point(s))
  8. 无线遥控器应用在安防防盗中有怎样作用?
  9. Linux-Monitor-Tools
  10. android4.0以上,利用耳机接听键实现自动接听,部分手机失败原因+解决方法(比如华为P7)
  11. 【更新】VMware虚拟机黑群晖7.1.1 RC(懒人包)
  12. 《生物化学与分子生物学》----酶促反应动力学----听课笔记(九)
  13. canvas[ymin_valid:ymax_valid + 1, xmin_valid:xmax_valid + 1] = np.fmax
  14. dd指令打包iso文件 linux_Linux_如何在Linux操作系统下创建ISO镜像文件,1、用dd命令#dd if=/dev/cdrom - phpStudy...
  15. 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
  16. L1-085 试试手气
  17. Color Space: Ycc
  18. 拿到JS异步函数返回值的几种方式
  19. AliPay - Java支付宝接口开发(三)
  20. java的书写规范_JAVA书写规范

热门文章

  1. 构造函数和析构函数的顺序问题
  2. SQUASHFS error
  3. 使用域名转发mqtt协议,避坑指南
  4. 移动CRM客户管理系统有哪些优势?
  5. rdpclip 远程桌面协议常遇到的问题
  6. C++调用libmp3lame实现压缩WAV为MP3【附VS2013项目】
  7. redis的安装教程(单机、linux)
  8. etcd成员报空间不足问题处理过程
  9. Git创建分支拉取代码到本地提交代码
  10. ThinkPHP5+Redis 操作