ubuntu配置opencv环境_opencv的安装与配置详细教程

ubuntu配置opencv环境_opencv的安装与配置详细教程目录一、安装opencv(1)下载opencv-3.4.15数据包(2)解压缩包(3)使用cmake安装opencv​​(4)配置环境(5)检验二、实例使用(1)打开图片(2)打开摄像头显示处理视频(3)录制视频三、总结四、参考文献一、安装opencv(1)下载opencv-3.4.15数据包打开浏览器,进入下载地址ReleaseOpenCV3.4.15·opencv/opencv·GitHub,选择Source..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

一、安装opencv

(1)下载opencv-3.4.15数据包

(2)解压缩包

(3)使用 cmake 安装 opencv

 ​

(4)配置环境

(5)检验

二、实例使用

 (1)打开图片

(2)打开摄像头显示处理视频

(3)录制视频

三、总结

四、参考文献


一、安装opencv

(1)下载opencv-3.4.15数据包

打开浏览器,进入下载地址Release OpenCV 3.4.15 · opencv/opencv · GitHub,选择Source code(zip)进行下载

ubuntu配置opencv环境_opencv的安装与配置详细教程

(2)解压缩包

在解压缩包之前,将 opencv-3.4.15.zip 复制到 home 文件夹下,再解压缩。

ubuntu配置opencv环境_opencv的安装与配置详细教程

然后使用如下命令进行解压

unzip opencv-3.4.15.zip 

(3)使用 cmake 安装 opencv

进入解压后的文件夹:opencv-3.4.15

使用如下代码

cd opencv-3.4.15

 ubuntu配置opencv环境_opencv的安装与配置详细教程

然后进入root模式,进行更新 

ubuntu配置opencv环境_opencv的安装与配置详细教程

接着再执行如下条命令安装 cmake 。

sudo apt-get install cmake

 ubuntu配置opencv环境_opencv的安装与配置详细教程

然后再输入如下命令安装依赖库

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

sudo apt-get install libgtk2.0-dev

sudo apt-get install pkg-config

 再在在opencv3.4.15文件夹下新建build文件夹

mkdir build

之后再下载cmake的基础上进行编译

sudo make

等待编译完成之后在进行安装

sudo make install

(4)配置环境

用gedit打开/etc/ld.so.conf
在文件中加上一行 /usr/local/lib
其中/user/loacal是opencv安装路径也就是makefile中指定的安装路

命令如下

sudo gedit /etc/ld.so.conf

运行sudo ldconfig,,修改bash.bashrc文件

sudo gedit /etc/bash.bashrc

然后再在文尾加上

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

然后在输入命令

source /etc/bash.bashrc

(5)检验

最后再输入

pkg-config opencv –modversion

ubuntu配置opencv环境_opencv的安装与配置详细教程

至此opencv安装完成

二、实例使用

 (1)打开图片

先创建一个文件夹用于存放代码,然后在文件夹之中存入一个test.cpp

gedit test.cpp

 然后在编译文件

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

然后再输入./test运行

如果发现此时并不能成功的运行,如果遇到这个问题的话是你的库出现了一些问题

具体解决方法参考如下

error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file解决方法 – 灰信网(软件开发博客聚合)

完成运行后我们会发现会新生成一张test.png

ubuntu配置opencv环境_opencv的安装与配置详细教程

ubuntu配置opencv环境_opencv的安装与配置详细教程

(2)打开摄像头显示处理视频

再在该文件夹下创建一个test1.cpp

代码如下

#include <opencv2/opencv.hpp>
using namespace cv;
 
int main()
{
  VideoCapture capture(0);
  while(1)
  {
     Mat frame;
     capture >> frame; 
     imshow("读取视频帧",frame);
     waitKey(30);
   }
     system("pause");
     return 0;
}

再进行编译

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

 最后运行程序

./test1

ubuntu配置opencv环境_opencv的安装与配置详细教程

(3)录制视频

再创建一个test2.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++ test2.cpp -o test2 `pkg-config –cflags –libs opencv`

最后再./test2进行运行

ubuntu配置opencv环境_opencv的安装与配置详细教程

 如果要打开硬盘上的一个视频文件来播放, 则需要把程序中的

VideoCapture capture(0);改为VideoCapture capture(“xxxx.mp4”);

在第6行的while循环中Mat是一个类,由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针。

waitKey这个命令控制着imshow的持续时间,当imshow之后不跟waitKey时,相当于没有给imshow提供时间展示图像,就只有一个空窗口一闪而过,所以必须加waitKey。

此代码会在while循环中一直运行,如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。改进方法如下:

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

三、总结

在本次的实验中学会了opencv的用法,但在安装的过程中遇到许多的困难也花费了大量的时间,最后通过参考许多大佬才得以完成。

四、参考文献

ubuntu安装opencv的正确方法_陶陶name-CSDN博客_ubuntu安装opencv

error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file解决方法 – 灰信网(软件开发博客聚合)
https://blog.csdn.net/pink_lemon/article/details/120632557

https://blog.csdn.net/public669/article/details/99044895

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188375.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jquery 字符串转数组

    如何把字符串”123,abc,xy,hi”转换成数组或者jQuery数组vararr=’123,abc,xy,hi’.split(‘,’);for(variinarr){alert(arr[i])}出处:http://www.cnblogs.com/xiaomuv587/archive/2012/10/18/2729766.html

    2022年4月14日
    142
  • Ubuntu10.04 下安装RabbitVCS

    Ubuntu10.04 下安装RabbitVCS安装RabbitVCS的方法步骤如下:1、sudoadd-apt-repositoryppa:rabbitvcs/ppa#将rabbitvcs的添加到源里面。(次操作会提示是否要添加到源里面,点击ENTER添加,ctrl+c不添加)2、sudoapt-keyadv–keyserverkeyserver.ubuntu.com–recv-keys34EF…

    2022年7月18日
    12
  • PXE部署

    PXE部署笑洋仟博客园首页新随笔联系订阅管理随笔-51文章-0评论-0阅读-2177PXE高效批量网络装机阅读目录(Content)一、PXE概述 1、PXE(PrebooteXcutionEnvironment)的概念 2、PXE批量部署的优点 3、部署PXE远程安装服务 4、搭建PXE远程安装服务器 二、搭建PXE远程安装服务器的步骤 1、安装启用TFTP服务 2、安装启用DHCP服务  …

    2022年6月29日
    26
  • 文件操作(File类等)API摘要[通俗易懂]

    文件操作(File类等)API摘要[通俗易懂]Console此类包含多个方法,可访问与当前Java虚拟机关联的基于字符的控制台设备(如果有)。虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。如果此虚拟机具

    2022年5月27日
    36
  • 最全综述 | 医学图像处理「建议收藏」

    0、引言医学图像处理的对象是各种不同成像机理的医学影像,临床广泛使用的医学成像种类主要有X-射线成像(X-CT)、核磁共振成像(MRI)、核医学成像(NMI)和超声波成像(UI)四类。…

    2022年4月12日
    99
  • linux空文件夹删不掉_linux可以遍历删除空目录吗

    linux空文件夹删不掉_linux可以遍历删除空目录吗请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习。1.rmdir命令简介本文主要介绍rmdir命令,该命令用于删除Linux上的空目录。对于非空目录,请使用rm命令。2.rmdir命令选项-p或–parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;–ignore-fail-on-non-empty:此…

    2025年5月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号