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许可(开源)发行的跨平台计算机视觉机器学习软件库,可以运行在LinuxWindowsAndroidMac OS操作系统上。 [1]


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

二 . 下载安装opencv

1. 下载opencv

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

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

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

解压命令:

unzip opecv-4.5.4.zip

解压后查看:

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

2. 使用cmake安装opencv

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

cd opencv-4.5.4

进入管理员权限:

sudo su

再更新一下:

sudo apt-get update

 

3.安装cmake

sudo apt-get cmake

 报错:

 解决方法:删除锁定文件

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

sudo rm /var/lib/dpkg/lock

再次执行:

4. 安装依赖库

sudo apt-get install build-essent

 

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

mkdir build
cd build

 使用cmake编译参数

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

sudo make

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

编译完成:

安装:sudo make install

 4. 配置环境

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

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

输入路径并保存:

 有警告可以忽略:

 更新系统共享链接库

sudo ldconfig

配置bush,修改bash.bshrc

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

 

 安装成功

三. 使用示例图片

1. 新建文件夹存代码

mkdir code
cd code

 2. 新建test1.cpp

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

 

 保存退出

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

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

编译:

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

 

 运行:./test1

 

 文件夹里还多了test.png:

 四. 使用示例——视频

1. 获取摄像头权限

windows下打开服务:

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

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

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

2. 播放视频

创建一个test2.cpp:

#include <opencv2/opencv.hpp>
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

 

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

 编译:

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

 

运行:

./test3

 

 查看code文件里的内容:

 

 五. 总结

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

六. 参考链接

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

终端下载失败解决方法
 

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值