ubuntu下OpenCV的安装以及简单应用

本文详细介绍了在Ubuntu系统中安装OpenCV的过程,包括下载安装包、解压、配置编译环境,以及使用cmake和make进行安装。在安装完成后,文章展示了如何在OpenCV-3.4.1的mytest目录下创建和编译cpp程序,并解决了摄像头打开、录制及播放视频时遇到的问题。虽然过程中遇到了一些挑战,但最终成功实现了OpenCV的基本应用。
摘要由CSDN通过智能技术生成

OpenCV简介

开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库[1]。 最初由英特尔开发,后来由柳树车库(Willow
Garage)支持,后来由伊塞兹(Itseez)支持(后来被英特尔收购[2])。该库是跨平台的,根据开源BSD许可证免费使用。

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

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

链接: 来自.

安装
将安装包下载至虚拟机中,如果虚拟机下载过慢可以安装vmware tool,就可以直接复制到虚拟机中了!
若是不知道怎么安装VMware tool可以参考
链接: link.

解压
找到下载的地址,将其复制到主目录中
在这里插入图片描述
打开终端,输入代码

unzip opencv-3.4.1.zip

在这里插入图片描述
解压完成!
进入root模式
su即可

使用 cmake 安装 opencv

cd opencv-3.4.11

在这里插入图片描述
将终端更新一下

sudo apt-get update
sudo apt-get install cmake   安装cmake代码

在这里插入图片描述

在这里插入图片描述
完成

在这里插入图片描述
运行以下代码安装,过程漫长,耐心等待

sudo apt-get update
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  
mkdir my_build_dir
cd my_build_dir
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make

在这里插入图片描述
完成!
执行命令

sudo make install

sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

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

打开是一个空白文件
将代码复制进去,保存

/usr/local/lib  

在这里插入图片描述
执行如下命令使得刚才的配置路径生效

sudo ldconfig  

配置bash

sudo gedit /etc/bash.bashrc  

再最后添加如下几行代码

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

保存
输入代码使生效

source /etc/bash.bashrc  

在这里插入图片描述
更新一下

sudo apt-get update

在这里插入图片描述
所有配置都已经完成了,现在可以开始编程了!

在opencv-3.4.1下新建文件夹mytest

创建一个文件夹

cd opencv-3.4.1
  mkdir mytest

创建一个cpp

touch test.cpp

开始编程

sudo gedit  /test.cpp

代码如下:
在这里插入图片描述
代码源来自
链接: link.

保存并且编译

gcc test.cpp -o test `pkg-config --cflags --libs opencv`

我们发现并不能编译成功

在这里插入图片描述
我们返回去看我们的代码,
发现我们创建文件的时候就带了/,因此我们输入的时候就要加/,然后我们继续编译,还是有错,说明错误还没有改完,这时候咨询老师后将gcc改成g++即可编译

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

在这里插入图片描述
在这里插入图片描述

使用opencv打开摄像头

我们找到点击虚拟机,可移动设备,选择连接到主机,然后虚拟机突然死机,然后我查阅大佬的资料后发现虚拟机的设置没有正确!首先
Win+R输入这个
在这里插入图片描述

在这里插入图片描述

选中这个,打开,然后进入虚拟机,设置,
在这里插入图片描述
将USB 设置成3.0即可!

然后开始打开摄像头

cd opencv-3.4.1
mdkir mytest
touch test2.cpp
g++ /test2.cpp -o test2 `pkg-config --cflags --libs opencv`
./test2

就打开成功!
在这里插入图片描述

录制视频

gedit test3.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;
}
g++ test3.cpp -o test3 `pkg-config --cflags --libs opencv`
./test3

这样就行了,

在这里插入图片描述

在这里插入图片描述

播放视频

进入文件夹,创建一个test2文件,然后输入代码:

在这里插入图片描述

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

将视频文件放入mystest,同时将文件名称改成man.mp4
在这里插入图片描述
运行就会出现一个视频,就是我放进去的那个。
因为只有4秒钟的视频,用手机拍摄的图片!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述`

总结

opencv固然很有趣,功能也很多,但是实在是太麻烦了,稍微有一点不对去找问题实在要花太多时间了,参考资料也看了很多,问了同学很久才勉强做出来,太不容易了!

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值