Linux下安装opencv.3.4.15并初步使用

目录

一. opencv简介

二 . 下载安装opencv

1. 下载opencv

2. 使用cmake安装opencv

3.安装cmake

4. 安装依赖库

  创建build文件夹,再进入文件夹

 使用cmake编译参数

 3.使用make创建编译并安装

 4. 配置环境

三. 使用示例图片

1. 新建文件夹存代码

 2. 新建test1.cpp

3. 将找到的图片复制到code目录下

4. 编译并运行test1.cpp文件

 四. 使用示例——视频

1. 获取摄像头权限

2. 播放视频

3.录制视频

 五. 总结

六. 参考链接


一. opencv简介

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1]


它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

二 . 下载安装opencv

1. 下载opencv

从官网下载opencv,由于是在Linux下使用,下载source版本

Linux下安装opencv.3.4.15并初步使用_第1张图片

 下载好之后把文件复制到home目录下或者在home里新建一个文件夹进行存放

 我的复制在home目录下,开始解压

解压命令:

unzip opecv-4.5.4.zip

解压后查看:

Linux下安装opencv.3.4.15并初步使用_第2张图片

Linux下安装opencv.3.4.15并初步使用_第3张图片

 可以看到已经有了文件夹,解压成功!

2. 使用cmake安装opencv

接下来就是下载opencv所需要的依赖库和cmake,因为下载之后得到的配置文件无法直接使用,需要使用cmake进行编译
进入到解压的文件包中:

cd opencv-4.5.4

进入管理员权限:

sudo su

再更新一下:

sudo apt-get update

 Linux下安装opencv.3.4.15并初步使用_第4张图片

3.安装cmake

sudo apt-get cmake

 报错:

 解决方法:删除锁定文件

sudo rm /var/lib/dpkg/lock-frontend       

sudo rm /var/lib/dpkg/lock

再次执行:

Linux下安装opencv.3.4.15并初步使用_第5张图片

4. 安装依赖库

sudo apt-get install build-essent

 

  创建build文件夹,再进入文件夹

mkdir build
cd build

 使用cmake编译参数

Linux下安装opencv.3.4.15并初步使用_第6张图片

 3.使用make创建编译并安装

sudo make

Linux下安装opencv.3.4.15并初步使用_第7张图片

 编译过程较长,耐心等待,建议多线程进行,速度会快很多

编译完成:

Linux下安装opencv.3.4.15并初步使用_第8张图片

安装:sudo make install

Linux下安装opencv.3.4.15并初步使用_第9张图片

 4. 配置环境

修改 opencv.conf 文件,打开后的文件是空的,添加 opencv 库的安装路径:/usr/local/lib

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

输入路径并保存:

Linux下安装opencv.3.4.15并初步使用_第10张图片

 有警告可以忽略:
Linux下安装opencv.3.4.15并初步使用_第11张图片

 更新系统共享链接库

sudo ldconfig

配置bush,修改bash.bshrc

sudo gedit /etc/bash.bashrc

 在文件末尾加入:

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

Linux下安装opencv.3.4.15并初步使用_第12张图片

 然后执行如下命令使得配置生效:

source /etc/bash.bashrc 

 更新一下:

sudo updatedb

 查看opencv的版本信息:

pkg-config --modversion opencv

 Linux下安装opencv.3.4.15并初步使用_第13张图片

 安装成功

三. 使用示例图片

1. 新建文件夹存代码

mkdir code
cd code

 2. 新建test1.cpp

vim test1.cpp

 test1.cpp代码:


#include 
#include 
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;iheight;i++)
		for (int j = 0;jwidth;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;
}

 Linux下安装opencv.3.4.15并初步使用_第14张图片

 保存退出

3. 将找到的图片复制到code目录下

Linux下安装opencv.3.4.15并初步使用_第15张图片

4. 编译并运行test1.cpp文件

编译:

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

 

 运行:./test1

 

Linux下安装opencv.3.4.15并初步使用_第16张图片

 文件夹里还多了test.png:

 四. 使用示例——视频

1. 获取摄像头权限

windows下打开服务:

Linux下安装opencv.3.4.15并初步使用_第17张图片

 找到 VMware USB Arbitration S… 服务,确保启动成功

Linux下安装opencv.3.4.15并初步使用_第18张图片

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

Linux下安装opencv.3.4.15并初步使用_第19张图片

选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ Quanta USB2.0 VGA UVC WebCam ” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ”

Linux下安装opencv.3.4.15并初步使用_第20张图片

2. 播放视频

创建一个test2.cpp:

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

编译:

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

查看:

 已经生成了test2可执行文件

运行:

./test2

 Linux下安装opencv.3.4.15并初步使用_第21张图片

3.录制视频

创建一个test3.cpp

代码如下:

//打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
#include
#include 
#include
#include
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(cap.get(CV_CAP_PROP_FRAME_WIDTH));
	int h = static_cast(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`

 Linux下安装opencv.3.4.15并初步使用_第22张图片

运行:

./test3

 Linux下安装opencv.3.4.15并初步使用_第23张图片

 查看code文件里的内容:

 Linux下安装opencv.3.4.15并初步使用_第24张图片

 五. 总结

这次实验让我更清楚了ubuntu虚拟机的apt-get等安装命令,也更加了解安装、编译、运行过程中各种可能出现的问题和解决方案。安装opencv没有什么太大的问题,但是再过程中环境配置总是出现各种问题,依赖包下载出现的问题最大,因此我还需要更加努力学习,对于opencv学习更深入。

六. 参考链接

Linux下安装opencv.3.4.15并初步使用

终端下载失败解决方法
 

你可能感兴趣的:(opencv)