Ubuntu下Opencv安装与使用

article/2025/10/9 10:45:48

Opencv

  • 前言
  • 一、Opencv的功能
  • 二、安装Opencv
      • 1.下载 OpenCV 3.4.11 数据包
      • 2.解压安装包
      • 3.安装cmake和依赖库
  • 三、配置编译环境
      • 1.创建编译文件夹
      • 2.使用make创建编译
      • 3.配置编译环境
  • 四、Opencv使用例程
    • 1.图片处理
    • 2.视频处理
      • 1.虚拟机获取摄像头权限
      • 2.播放视频
      • 3.录制视频
  • 总结


前言

OpenCV(开源的计算机视觉库)是基于BSD协议,因此它可免费用于学术和商业用途。其提供C++,C,Python和Java接口,支持Windows,Linux,Mac OS,iOS和Android。OpenCV致力于高效运算和即时应用开发。因其是用优化的C/C++编写的,故其可以充分利用多核处理优势。并且还启用了OpenSL,它可以利用底层异构计算平台的硬件加速。广泛运用在世界各地,OpenCV拥有超过4.7万人的用户社区和超过1400万的下载次数。从互动艺术、矿山检查、网络地图到先进的机器人技术都有OpenCV的身影。


一、Opencv的功能

  • 人机互动

  • 物体识别

  • 图像分割

  • 人脸识别

  • 动作识别

  • 运动跟踪

  • 运动分析

  • 机器视觉

  • 结构分析

  • 汽车安全驾驶

二、安装Opencv

1.下载 OpenCV 3.4.11 数据包

国外官网下载地址:https://github.com/opencv/opencv/releases,不推荐在国外网址上下载,巨慢!!!!

国内快速下载地址:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/

2.解压安装包

创建一个名为Opencv的文件夹

 mkdir opencv

将压缩包解压到opencv文件夹(指定一个文件夹)

unzip opencv-3.4.11.zip -d opencv

3.安装cmake和依赖库

  • 进入opencv
cd opencv-3.4.11
  • 安装cmake

    cmake的作用

 sudo apt-get install cmake  

注意:如果提醒需要apt-get update,那就先sudo su进入root权限,再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  

执行后出现问题请添加图片描述
查阅相关资料后,解决问题

OpenCV安装libjasper-dev依赖包错误

解决方法:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

再次输入

sudo apt install libjasper1 libjasper-dev

出现以下界面,问题解决

在这里插入图片描述

再次输入

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

耐心等待几分钟


三、配置编译环境

1.创建编译文件夹

  • 创建build文件夹
   mkdir build
  • 进入build文件夹
   cd build
  • 使用cmake编译参数
 cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
  • 生成编译文件
    请添加图片描述

2.使用make创建编译

:单线程编译:sudo make ,这会等待比较长的时间,如果你想更快编译完,可以使用命令:sudo make -j4 ,而 -j4 表示使用 4 个线程进行编译。

	sudo make -j4

在这里插入图片描述
等等,经过漫长的等待后,怎么又出错了?
请添加图片描述
一开始一脸懵逼,仅使用这些关键词查找出问题的原因,看到一些答案说往上翻,可以看到红字,果不其然,我所出现的错误信息如下:
请添加图片描述

c++:internal compiler error:已杀死(program cc1plus)

再次查阅资料后,发现是我内存配置不够(原来是2G),有两种方法可供参考,一是设置虚拟机内存大小(我设置为3G),二是临时使用交换分区。

如果你也遇到这个问题,可参考

C++ 错误解决 —— internal compiler error

  • 设置好内存大小后,重新输入命令
sudo make -j4
  • 等待编译成功

请添加图片描述

  • 执行命令
sudo make install

3.配置编译环境

  • 修改 opencv.conf 文件
sudo gedit /etc/ld.so.conf.d/opencv.conf

打开后的文件是空的,添加 opencv 库的安装路径:/usr/local/lib ,保存退出

在这里插入图片描述

  • 执行如下命令使得刚才的配置路径生效
 sudo ldconfig  
  • 修改 bash.bashrc 文件
 sudo gedit /etc/bash.bashrc  
  • 在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

在这里插入图片描述
终于安装成功了!!!

四、Opencv使用例程

1.图片处理

  • 在opencv-3.4.1下新建文件夹mytest
   mkdir mytest
  • 创建test.cpp 文件
gedit test.cpp

将下面的代码复制粘贴进去

test.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;
}
  • 保存退出,编译
gcc test.cpp -o test `pkg-config --cflags --libs opencv`

gcc编译器:gcc + 文件名 + -o + 输出文件流名称 +` 支持包

其中pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息(包括头文件和库的所有信息)

—cflags 是用来指定程序在编译时所需要头文件所在的目录

—libs则是指定程序在链接时所需要的动态链接库的目录

请添加图片描述
无法添加符号,这是怎么回事呢?

在C语言的项目中,makefile使用的是gcc来编译和链接,因此怀疑是C与C++链接时的兼容问题,于是在Cpp项目中改用g++,成功!!

g++ test.cpp -o test `pkg-config --cflags --libs opencv`
  • 生成可执行文件test

注意:在这里图片的名字要放在与创建的cpp文件同一个文件中,便于系统查找;图片的命名方式应与代码中的命名一致,我这里命名为lena.jpg

IplImage* image = cvLoadImage("lena.jpg");
  • 执行命令
./test

效果如下

在这里插入图片描述

2.视频处理

1.虚拟机获取摄像头权限

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

在这里插入图片描述

  • 确保 VMware USB Arbitration Service正在运行

在这里插入图片描述

  • 打开虚拟机-设置

在这里插入图片描述

  • 选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.0 ”
    在这里插入图片描述

若选项中没有USB控制器,可在硬件选项中添加后执行上一步操作
在这里插入图片描述

  • 选择 虚拟机 - 可移动设备 – IMC Networks ov9734_azureeave_camera连接

注意:每个人的设备名称可能不一样

在这里插入图片描述

在这里插入图片描述

  • 虚拟机右下角摄像头图标若有个小绿点,则连接成功
    在这里插入图片描述

2.播放视频

  • 在mytest文件中创建一个 test1.cpp 文件
   gedit test1.cpp
  • 编写代码
    test1.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{//从man.mp4中读取视频VideoCapture capture("man.mp4");//从摄像头中读取视频//VideoCapture capture(0);//循环显示每一帧while(1){Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧if(frame.empty())//播放完毕,退出break;imshow("读取视频帧",frame);//显示当前帧waitKey(25);//延时25ms}system("pause");return 0;
}

代码分析:
1)

C++: VideoCapture::VideoCapture();
C++: VideoCapture::VideoCapture(const string& filename);
C++: VideoCapture::VideoCapture(int device);

传入对应的参数,可以直接打开视频文件或者要调用的摄像头
参数: filename –> 打开的视频文件名
参数:device –> 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头

VideoCapture capture("man.mp4")

表示从一个名为man的mp4类型文件中读取视频内容

2)

Mat本质上是由两个数据部分组成的类: (包含信息有矩阵的大小,用于存储的方法,矩阵存储的地址等) 的矩阵头和一个指针,指向包含了像素值的矩阵(可根据选择用于存储的方法采用任何维度存储数据)。

简单来说,就是包含一张图片所有强度值的像素点矩阵。

OpenCV Mat类详解和用法

3)waitKey()这个函数是在一个给定的时间内(单位ms)等待用户按键触发;
如果用户没有按下键,返回值为-1,并关闭当前显示的窗口;
如果用户按下键,则返回对于按键的ASCII码值,并关闭当前显示的窗口;

waitKey()与waitKey(0),都代表无限等待,程序会无限制的等待用户的按键(适用于图像显示)

waitKey(25);//延时25ms

每25ms刷新一次,即1秒40帧

  • 准备一个小视频,命名为与代码中文件名相同的 man.mp4

在这里插入图片描述

  • 编译 test1.cpp 文件
 g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`
  • 运行效果

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

  • 小结
    a.当删除waitKey()延时函数时,再次编译,不能正常运行(猜测:此时cpu执行速度很快,读取和显示一帧图像只需要几us,而显示器(一般是以ms刷新图片)不能以如此高的速率显示,两者可能会出现冲突,故函数中一个存在延时函数)
    b.当设置waitKey()或waitKey(0)时,不动态显示视频,只显示某一张图片,按任意键显示下一帧图片(需要手动按键)
    c.使用ESC键退出(而不是Ctrl+C 强制中断程序)
    只需在程序中稍微修改下即可
    在这里插入图片描述

3.录制视频

  • 创建test2.cpp 文件
gedit test2.cpp
  • 编写代码
    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

在这里插入图片描述

至此,OpenCV的安装和使用就简单介绍到这了,更多其他的功能可参考

OpenCV教程:超详细的OpenCV入门教程,值得收藏!

总结

在ubuntu下安装Opencv ,我遇到了很多小问题,不过庆幸的是,很多问题都可以在网上找到答案,也参考了很多大佬的文章,安装步骤等,在这学习过程中,我遇到了我一些小问题,有一点心得体会,于是参考下面两篇文章写了自己的关于Opencv 安装与使用步骤,感谢!!!
此外,在安装过程中,遇到问题很正常,只要大家耐心点,基本上出现的问题都可以找到解决办法的。

来源:

Windows10&Ubantu16.04&树莓派3B+安装opencv教程
Ubuntu18.04下OpenCV3.4.11的安装及使用示例


http://chatgpt.dhexx.cn/article/JwLxR1u3.shtml

相关文章

OpenCV库安装

OpenCV库安装 OpenCV库的调用名是cv2 所以会看到这样的import语句 import cv2这句话就是对openCV库的调用 openCV库的下载安装 First 好像不需要像网上的教程那样, 首先去官网下载exe执行文件, 然后在VS中进行配置 直接在teminal中, 进入要指定的conda环境, 然后输入pip…

如何安装OpenCV?OpenCV下载安装流程

安装OpenCV需要以下步骤&#xff1a; 下载OpenCV&#xff1a;首先需要从OpenCV官网&#xff08;https://opencv.org/releases/&#xff09;上下载适合自己操作系统版本的OpenCV。 安装依赖项&#xff1a;在安装OpenCV之前&#xff0c;需要先安装一些必要的依赖项&#xff0c;例…

opencv的安装

记得之前看博客的时候看过很多大佬写过opencv的各种安装方法&#xff0c;有使用网站先下载对应文件进行安装的&#xff0c;不过这个还像还得配置一些环境&#xff0c;也有一些大佬使用prompt命令进行安装的&#xff0c;在本人想要安装opencv时大体看了看大佬们的安装教程&#…

OpenCV安装教程:Windows 安装 Visual Studio + OpenCV + OpenCV contrib

目录 0.写作背景 1.安装visual studio 2.下载OpenCV相关的源码 下载OpenCV原始的源码 下载OpenCV contrib的源码 下载安装cmake 3.cmake编译OpenCV 初始编译 CmakeDownload的bug修复 OpenCV-crontrib编译&#xff1a; Generate生成代码 VS生成代码&#xff1a; 报…

openCV-python安装

同样在anaconda下创建一个opencv-python环境 首先&#xff0c;打开anaconda navigator,然后创建一个环境来放opencv-python。 先点击下面的create&#xff0c;然后创建一个新环境。 选择你的python版本&#xff0c;这里我选择的是Python3.6。你也可以根据你的需要和习惯来选择…

opencv安装教程(通用过程说明)

文章目录 环境说明安装方式说明预编译版本从OpenCV团队获取从第三方开发者获取 从源码编译步骤0&#xff1a;安装准备步骤1&#xff1a;获取源代码步骤2&#xff1a;配置构建环境步骤3&#xff1a;构建步骤4&#xff1a;安装&#xff08;可选&#xff09;步骤5&#xff1a;构建…

【安装】安装OpenCV简易教程

&#xff08;1&#xff09;安装opencv-python 执行命令&#xff1a;pip install opencv-python3.4.1.15 博主指定安装的3.4.1.15版本&#xff0c;根据需求可以自己决定需要什么版本。出现successfly字样即安装成功&#xff0c;如果不放心可以验证&#xff0c;在python解释器下…

OpenCV C++安装和配置

最新版的OpenVINO 2022.1 版本不在默认附带OpenCV工具&#xff0c;所以我们需要额外安装OpenCV工具。 1. 下载并安装OpenCV 访问OpenCV官网 https://opencv.org/ &#xff0c;选择Library下的Releases&#xff0c;进入到下载页面&#xff0c;或直接访问https://opencv.org/rel…

windows下OpenCV安装教程(小白教程)

OpenCV介绍 OpenCV 是一个基于 BSD 许可&#xff08;开源&#xff09;发行的跨平台计算机视觉库&#xff0c;可以运行在 Linux、Windows、 Android 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时 提供了 Python、Ruby、MATLAB 等…

VS2019+OpenCV安装与配置教程

目录 VS2019的下载安装OpenCV的下载安装OpenCV的配置配置系统变量给VS中的工程一键配置OpenCV测试配置的效果 最近要用到很多OpenCV的库&#xff0c;所以开始学了点OpenCV&#xff0c;本文记录VS和OpenCV的安装、配置过程。配置OpenCV使用配置文件的方法&#xff0c;配置完一次…

OpenCV下载、安装以及使用

一、安装Visual Studio OpenCV是一种开源的计算机视觉开发库。既然是开发库&#xff0c;那么必须依托某种语言程序来加载。以C为例&#xff0c;在安装OpenCV之前&#xff0c;必须安装C的程序开发环境&#xff08;IDE&#xff09;&#xff0c;在此我们选择Visual Studio Commun…

Ubuntu下Opencv的安装(亲测有效,超级简单!)

一.安装包下载 1.Opencv安装包下载 在这里面选择你想下载的opencv版本&#xff0c;这里以Opencv-4.6.0为例。 2.opencv_contrib下载&#xff08;注意这里要与你上面下载的opencv版本一致&#xff09; 3.两个都下载好以后&#xff0c;把opencv_contrib放到解压后opencv文件夹…

【OpenCV入门指南】第一篇 安装OpenCV

【OpenCV第一篇】安装OpenCV 本篇主要介绍如何下载OpenCV安装程序&#xff0c;如何在VS2008下安装配置OpenCV&#xff0c;文章最后还介绍了一个使用OpenCV的简单小例子。 《OpenCV入门指南》系列文章地址&#xff1a;http://blog.csdn.net/morewindows/article/category/1291…

windows下OpenCV的安装配置部署详细教程

零、简介   OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发&#xff0c;以BSD许可证授权发行&#xff0c;可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及…

openCV安装教程

01 通过网络进行安装 (1).在windows界面里找到Anaconda3里的终端并启动&#xff08;高版本下的anaconda可能会有两个&#xff0c;若有两个任意一个即可&#xff09; 2.启动后输入&#xff1a;pip install opencv-python&#xff0c;未报安装错误即为安装成功。 02 通过whl文件…

第一章之OpenCV安装

opencv 安装 一、地址 opencv官网 opencv Github 官方安装流程 二、概述 opencv有两种安装方式&#xff1a;1、根据自己的平台选择官方编译好的版本&#xff1b;2、下载源码自己编译。 三、预编译版本 官方预编译版本满足大多数需求。预编译版本有两个途径&#xff1a;…

opencv安装教程(详细)小白教程

opencv安装教程&#xff08;详细&#xff09;小白教程 我们以OpenCv的最新版本为3.1.0版本为例介绍其配置方法。 opencv安装教程&#xff08;详细&#xff09;小白教程一、OpenCv的官方下载地址二、下载步骤1.点击libarary下拉框的release2.选择你想要的版本和系统&#xff08;…

opencv怎么安装?opencv下载安装教程

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。下面就介绍OpenCV的下载和安装方法。 opencv怎么安装&#xff1f; 软件准备 步骤1&#xff1a;在官网上下载OpenCV的安装包&#xff0c;由于服务器…

OpenCV安装教程(全网最细,小白直接上手!!!)

OpenCV是Python、Ruby、MATLAB的接口&#xff0c;OpenCV在计算机视觉的发展中发挥了重要的作用&#xff0c;使成千上万的人能够在视觉上做更多的工作。由于在VSLAM技术研究过程中&#xff0c;经常会涉及OpenCV不同版本在ubuntu系统下的安装。文章简单总结了一下两个版本的OpenC…

python下opencv安装

1、查看python版本 cmd输入命令行,python。 2、根据对应python版本&#xff0c;去https://www.lfd.uci.edu/~gohlke/pythonlibs/&#xff0c;下载对应版本的opencv。 我的python版本是3.8&#xff0c;64位&#xff0c;所以下载一下标红的链接。 3、下载 pip install wheel 4、…