Ubuntu下安装OpenCV4.6.0并使用

这篇具有很好参考价值的文章主要介绍了Ubuntu下安装OpenCV4.6.0并使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是OpenCV

OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux,Windows,Mac等操作系统上。

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

在系统中安装了Opencv库后,我们就可以通过引入头文件的方式使用OpenCv中的各种算法,用于计算机视觉以及图像处理。

安装OpenCV

安装OpenCV的过程很复杂,可能会多次失败。建议有耐心多试几次。

  • 系统:Linux(Ubuntu18.04.1)
  • 软件:OpenCv
  • 下载版本:4.6.0

1.下载安装包

下载地址:https://github.com/opencv/opencv/releases

Ubuntu下安装OpenCV4.6.0并使用

github网站访问有时候很卡,有能力的可以使用魔法上网。

2.解压缩

下载好后,可以在文件夹中看见被下载好的压缩包文件(我的是在当前用户目录下)

在终端打开该路径,使用指令解压:

unzip opencv_4.x.zip

解压缩后可以看见文件夹。

Ubuntu下安装OpenCV4.6.0并使用

3.下载CMake并完成配置

sudo apt-get cmake

下载完成后,在进入之前解压的文件夹,创建并进入一个build文件夹。

cd opencv_4.x
mkdir build
cd build

使用以下指令配置cmake:

cmake -DCMAKE_BUILD_TYPE=Release \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local ..

这里我参考了博客:https://blog.csdn.net/spiremoon/article/details/105812303

之前我照着老师给的参考博客进行下载,在完成所有安装操作后,输入打印OpenCv版本的指令时会提示以下报错:

Package opencv4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv4.pc’
to the PKG_CONFIG_PATH environment variable

原因是在完成安装后,OpenCv没有生成Opencv4.pc文件。在OpenCv4以前的版本是会自动生成该文件的。到了4版本,OpenCv默认不会自动生成.pc文件。因此在配置cmake时一定要带上如下参数:

-DOPENCV_GENERATE_PKGCONFIG=ON

表示开启生成配置文件的功能。

4.下载依赖

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

在这一步可能会出现问题,出现报错:“Unable to locate package libjasper-dev”

我最开始以为是Ubuntu镜像源的问题,于是我参考了以下博客,更换了Ubuntu的镜像源。

原博客:https://blog.csdn.net/laoluobo76/article/details/108302191

使用以下指令,将下载源替换成清华大学镜像:

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

但是替换镜像源后依旧会继续报错。因此我又再网上搜索了很久,找到了这篇博客:

https://blog.csdn.net/qq_44830040/article/details/105961295

按照这篇博客的说法,我执行了以下指令:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

sudo apt update

于是libjasper-dev也成功下载了。

5.编译并安装

在build下,使用以下指令进行编译:

sudo make

输入指令后,会看到程序从0%开始进行编译。现在要做的是等待编译完成。这个过程非常长。想要加快速度,可以这样打:

sudo make -4j

这是使用4个线程进行编译,可以一定程度上加快编译速度。

但是笔者在使用该指令的时候出现了问题。在编译途中提示部分指令执行失败,然后整个虚拟机进入卡死状态,并在几分钟后恢复正常并提示编译失败。笔者重复试验了好几次都是这样。因此如果你使用多线程编译出现跟我一样的情况时,请老老实实使用原始指令编译。

在编译完成后,使用指令:

sudo make install

完成安装。

6.OpenCV环境配置

环境配置的过程参照了此博客:https://blog.csdn.net/ssj925319/article/details/109231145

原博客的OpenCV是3版本的,但是在配置环境这一点两个版本之间几乎没有什么区别。

修改 opencv.conf 文件,添加 opencv 库的安装路径:/usr/local/lib。这个路径是配置cmake的时候配置的。

执行以下指令:

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

填入/usr/local/lib并保存退出。

更新系统共享链接库:

sudo ldconfig

配置 bash ,修改 bash.bashrc 文件,在文件末尾加上这一段:

![opencv4_v_name](E:\学习资料\嵌入式作业\02_函数库与opencv\02_02_opencv\opencv4_v_name.png)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

最后查看OpenCV4版本号,如果能够查看成功,说明OpenCV安装并配置成功。

输入以下指令:

pkg-config --modversion opencv4

Ubuntu下安装OpenCV4.6.0并使用

注意,这里与原博客不一样,这里OpenCV4生成的cp文件名是“opencv4”,而不是旧版本的“opencv”。因此注意不要打错。如果打成opencv,那么会报Package opencv was not found in the pkg-config search path。如果在cmake配置时没有开启生成pc功能,那么就会报上文所提及的错误。

Ubuntu下安装OpenCV4.6.0并使用

之所以会报Package xxx was not found in the pkg-config search path,是因为在pkg-config search path下没有找到你输入的包名xxx。要么你输错名字(opencv与opencv4),要么没生成pc文件。

下面几张图,我通过修改cp文件名字,模拟需要的cp文件不存在,验证报错原因。

Ubuntu下安装OpenCV4.6.0并使用

Ubuntu下安装OpenCV4.6.0并使用

代码示例

图片处理

创建好项目路径,在路径下创建一个cpp文件。

vim test.cpp

这里有一段代码,用于将图像灰化。在test.cpp中粘贴下面这段代码:

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

Mat src, gray;

int main()
{
        src = imread("mopemope.jpeg");//这里是你的图片

        if (src.empty())
        {
                cout << "没有读取到图像" << endl;
                return -1;
        }
                gray.create(row, col, CV_8UC1);

        for (int i = 0; i < row; i++)
        {
                for (int j = 0; j < col; j++)
                {
                        gray.at<uchar>(i,j)= src.at<Vec3b>(i, j)[0] * 0.144 		 +src.at<Vec3b>(i, j)[1] * 0.587 + src.at<Vec3b>(i, j)[2] * 0.299;
                }
        }

        imwrite("test.jpg", gray);//这里是你的输出

        waitKey(0);
        
        return 0;
}

根据你写的文件路径,在对应的位置准备相应的图片文件(我这里是当前路径下,一张名为mopemope的jpeg文件)

Ubuntu下安装OpenCV4.6.0并使用

然后输入以下指令:

g++ `pkg-config --cflags opencv4` test.cpp `pkg-config --libs opencv4` -o test.out

就可以看见生成了可执行文件。

Ubuntu下安装OpenCV4.6.0并使用

注意,笔者在编译成功之前也有尝试按照https://blog.csdn.net/ssj925319/article/details/109231145中的指令进行编译,即在g++ .cpp -o .out指令后面加上pkg-config --cflags opencv4

g++ test.cpp -o test.out `pkg-config --libs opencv4` 

但是不知道为什么会报错,如下图所示:

Ubuntu下安装OpenCV4.6.0并使用

笔者还暂未找到原因,希望有大佬能够指点迷津!如果你也是和我一样的小白的话,建议用最开始我成功的那条指令编译。

现在执行以下可执行文件,看见已经生成了新的图片,效果是根据彩色图片生成灰度图片。

Ubuntu下安装OpenCV4.6.0并使用

先生买朵小花吧()

视频处理

虚拟机获取摄像头权限

参照https://blog.csdn.net/ssj925319/article/details/109231145

使用快捷键 Win + R ,输入 services.msc ,并回车。

找到程序VMware Authorization Service,确保已经启动。

Ubuntu下安装OpenCV4.6.0并使用

进入VMware应用,找到虚拟机设置选项,虚拟机->设置->硬件->usb兼容性调usb3.0以上;选择 “ 虚拟机 ” ,再选择 “ 可移动设备 ” ,再选择 “ IMC NetWorks USB2.0 HD UVC WebCam ” ,最后点击 “ 连接 ” ,再弹出的窗口内点击 “ 确定 ” 。

此时再看虚拟机右下角的这个图标有没有绿点,有的话说明已经成功了。

Ubuntu下安装OpenCV4.6.0并使用

播放视频

创建一个新的cpp文件:

vim main.cpp

在文件中输入以下代码:

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

和图像处理一样编译:

g++ `pkg-config --cflags opencv4` main.cpp `pkg-config --libs opencv4` -o main.out

Ubuntu下安装OpenCV4.6.0并使用

根据你写的路径(我这里是当前目录)保存一个同名视频:

Ubuntu下安装OpenCV4.6.0并使用

执行可执行文件,系统播放视频:

Ubuntu下安装OpenCV4.6.0并使用

摄像头录制

首先创建好源代码文件

vim test.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::VideoWriter::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++ `pkg-config --cflags opencv4` test.cpp `pkg-config --libs opencv4` -o test.out

Ubuntu下安装OpenCV4.6.0并使用

运行效果:

Ubuntu下安装OpenCV4.6.0并使用

如果有以下报错:

Ubuntu下安装OpenCV4.6.0并使用

请查看虚拟机->设置->硬件->usb兼容性是否调的是usb3.0以上,不是的话先调成3.0以上,再重新在虚拟机->可移动设备->IMC NetWorks USB2.0 HD UVC WebCam重新连接,虽然usb兼容性是否调的是usb3.0以上但是也报这个错的话也试试重新在连接IMC NetWorks USB2.0 HD UVC WebCam。

退出录制后,在相对应的路径留下视频。

Ubuntu下安装OpenCV4.6.0并使用文章来源地址https://www.toymoban.com/news/detail-495523.html

参考资料

  1. https://github.com/opencv/opencv/releases
  2. https://blog.csdn.net/spiremoon/article/details/105812303
  3. https://blog.csdn.net/laoluobo76/article/details/108302191
  4. https://blog.csdn.net/qq_44830040/article/details/105961295
  5. https://blog.csdn.net/ssj925319/article/details/109231145

到了这里,关于Ubuntu下安装OpenCV4.6.0并使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 树莓派4b安装opencv4.6.0并开启ffmpeg视频加速(2022.10.27)

    按ctrl + o ,enter保存,ctrl + x 关闭; 将以下内容写入配置文件(为pip配置阿里和豆瓣源):(保存并退出同上)

    2023年04月16日
    浏览(44)
  • cmake 编译opencv4.5.5/opencv4.6.0/opencv4.7.0 gpu版以及vs2022配置opencv-gpu

    cmake 编译opencv4.5.5/opencv4.6.0/opencv4.7.0 gpu版本编译方法相同,本文以opencv4.5.5为例 一定确保已经成功安装了cuda工具包,以及VS编译器,清单如下 cuda工具包 visual studio 编译器 cmake构建工具 opencv源码 opencv-contrib源码 1.1 cmake构建工具下载 https://cmake.org/download/ 1.2 opencv源码下载 官网

    2023年04月25日
    浏览(51)
  • Android基于opencv4.6.0实现人脸识别功能

    步骤: 1.整合opencv 2.获取相机的SurfaceView传到native层去检测(亦或是不断的获取SurfaceView的Bitmap,传到native层) 3.检测人脸,在本地保存人脸特征信息 4.上传至后台(不实现) 人脸识别实现的思路(例:人脸登录) 1.人脸信息录入 1.1获取相机的Bitmap,检测人脸(保证人脸信息比较精准

    2024年02月03日
    浏览(48)
  • VS2022+OpenCV4.6.0+MFC环境配置

    一、环境安装         OpenCV: Releases - OpenCV https://opencv.org/releases/         VS2022: Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 Visual Studio 开发工具和服务让任何开发人员在任何平台和语言的应用开发都更加轻松。 随时随地免费使用代码编辑器或 IDE 进行开发。

    2024年02月02日
    浏览(47)
  • VS2022永久配置OpenCV4.6.0的方法

    OpenCV环境永久配置方法 1、visual studio 2022的下载 首先下载visual studio 2022,下载完后先不用进行任何操作,下载完后打开进入以下界面: 2、OpenCV的下载 进入OpenCV官网Home - OpenCV,下载完解压安装后是一个命名为opencv的文件夹如下: 3、环境配置 首先是电脑环境变量的配置,右键

    2024年02月16日
    浏览(43)
  • ubuntu20.04安装opencv4库

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 opencv官方网站:https://opencv.org/releases/ 终端输入: 在最下面添加: 若显示如下,则成功安装。 上述步骤运行无误后,基本完成了 opencv 4 的安装,接下来使用以下命令验证: 问题解析: 未安装apache an

    2024年02月21日
    浏览(59)
  • ubuntu20.04安装opencv4.7

    执行以下命令安装最新的cmake https://opencv.org/releases/ 1. 将下载的文件【opencv-4.7.0.zip】解压到需要安装的目录,解压后会得到【opencv-4.7.0】文件夹。 2. 打开【opencv-4.7.0】文件夹,并新建build文件夹。 (我是装在/home/user_name/app目录下,其中user_name是我的用户名) 打开刚才新建的

    2024年02月02日
    浏览(68)
  • Ubuntu 下 opencv4.8.0 (包含拓展库) 的编译安装

    首先展示一下我电脑的信息: opencv-4.8.0.zip: https://codeload.github.com/opencv/opencv/zip/refs/tags/4.8.0 opencv-contrib-4.8.0.zip: https://codeload.github.com/opencv/opencv_contrib/zip/refs/tags/4.8.0 后面我发现在安装扩展库时还有一部分依赖没有装。  关于你缺少了什么依赖,可以通过阅读cmake时的输出来看

    2024年02月03日
    浏览(51)
  • VS2019配置opencv4.6.0手把手一步一步实现

    引言:配置环境真是让人痛苦不堪,踩了无数个坑,网上的文章五花八门,完全不知道参考哪个,直接劝退。为了能顺利配置,此处进行记录,以后可以回过头来看,也分享给大家。 我提供了两种方法配置,一种是针对于一个项目配置,一种是针对所有需要配置opencv的项目。

    2024年02月16日
    浏览(36)
  • Ubuntu20.04安装OpenCV4.5.5和OpenCV_Contrib4.5.5

    进入到最开始自己的安装opencv的build目录 然后返回到初始目录,删除掉build目录 删除opencv其他的相关文件 前四行命令中的opencv2,有些有可能自己命名了opencv4,在相关目录下删除掉跟opencv相关的文件夹就可以。 检查是否完全删除: 源程序下载地址 https://github.com/opencv 下载好

    2024年02月03日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包