首页 > 系统相关 >在Ubuntu上通过源码安装OpenCV和OpenCVSharp

在Ubuntu上通过源码安装OpenCV和OpenCVSharp

时间:2024-10-09 09:33:40浏览次数:1  
标签:编译 sudo dev OpenCV 源码 opencv OpenCVSharp 安装

OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉和机器学习软件库。以下是 OpenCV 的一些主要特性:

主要特性

  • 功能丰富:OpenCV 提供了超过2500个优化的算法,包括图像处理、特征检测、物体识别、面部识别、图像分割、运动分析等。
  • 跨平台:支持 Windows、Linux、macOS、Android 和 iOS 等多种平台。
  • 高性能:经过优化,支持多线程和并行计算,以实现更快的处理速度。
  • 强大的社区支持:OpenCV 拥有活跃的开发者社区,提供了大量的文档、教程和示例代码。

安装和使用

OpencvSharp是对Opencv的封装。要在 .NET 项目中使用 OpenCVSharp,根据不同的系统安装不同的运行时包,Nuget上面也有OpenCvSharp4的Ubuntu运行时库,这里只是介绍自己如何通过手动编译自己需要的库。可以通过 NuGet 包管理器安装:

Install-Package OpenCvSharp4

然后,可以在代码中使用 OpenCV 的功能,例如:

internal class Program
{
    static void Main(string[] args)
    {

        Mat mat = new Mat("color.png",ImreadModes.Grayscale);
        Cv2.ImWrite("gray.png", mat);
        Console.WriteLine("Hello, World!");
        Console.ReadKey();
    }
}

但是代码在Ubuntu执行会报错,因为缺少依赖库。


Unhandled exception. System.TypeInitializationException: The type initializer for 'OpenCvSharp.Internal.NativeMethods' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'OpenCvSharpExtern' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libOpenCvSharpExtern: cannot open shared object file: No such file or directory
   at OpenCvSharp.Internal.NativeMethods.redirectError(CvErrorCallback errCallback, IntPtr userdata, IntPtr& prevUserdata)
   at OpenCvSharp.Internal.ExceptionHandler.RegisterExceptionCallback()
   at OpenCvSharp.Internal.NativeMethods.LoadLibraries(IEnumerable`1 additionalPaths)
   at OpenCvSharp.Internal.NativeMethods..cctor()
   --- End of inner exception stack trace ---
   at OpenCvSharp.Internal.NativeMethods.imgcodecs_imread(String fileName, Int32 flags, IntPtr& returnValue)
   at OpenCvSharp.Mat..ctor(String fileName, ImreadModes flags)
   at OpenCVDemo.Program.Main(String[] args) in C:\Users\liubin\source\repos\OpenCVDemo\OpenCVDemo\Program.cs:line 10
Aborted (core dumped)

image

这种情况下就需要根据自己的情况编译OpenCV和OpenCvSharp。下面介绍如何编译:

在 Linux 上安装 OpenCV 并配置第三方库的步骤如下。假设你使用的是 Ubuntu 发行版,但大部分步骤也适用于其他 Linux 发行版,只是包管理器和一些命令可能会有所不同。

1. 更新系统

首先,确保你的系统是最新的:

sudo apt update
sudo apt upgrade

2. 安装 OpenCV 的依赖项

安装 OpenCV 所需的依赖库:

sudo apt install build-essential cmake git pkg-config
sudo apt install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libgtk2.0-dev libatlas-base-dev gfortran
sudo apt install libopencv-dev

3. 获取 OpenCV 源代码

克隆 OpenCV 和 OpenCV 贡献模块(可选)的 GitHub 仓库:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

4. 创建构建目录

为 OpenCV 创建一个构建目录:

cd opencv
mkdir build
cd build

5. 配置 OpenCV

使用 CMake 配置 OpenCV,指定需要的选项和库。在这个示例中,我们将指向 opencv_contrib 中的模块(如果你使用了贡献模块),并设置安装路径。

cmake -D CMAKE_BUILD_TYPE=Release \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..

6. 编译 OpenCV

使用 make 命令编译 OpenCV。-j 参数可以根据你的 CPU 核心数来加快编译速度:

make -j$(nproc)

7. 安装 OpenCV

编译完成后,安装 OpenCV 到指定的目录:

sudo make install # 编译的库会安装到/usr/local

8. 配置库路径

安装后,配置共享库路径,以便系统能够找到 OpenCV 库。编辑 /etc/ld.so.conf.d/opencv.conf 并添加以下行:

/usr/local/lib

然后运行以下命令以更新库缓存:

sudo ldconfig

9. 获取 OpenCVSharp 源代码

git clone https://github.com/shimat/opencvsharp.git

10. 编译以及安装OpenCVSharp

mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install

这下代码就可以正常执行了,输入的color.png是一张彩色图,保存的gray.png是灰度图。
在拉取代码的时候可以自己手动切换到自己需要的版本再编译,编译安装完后会生成动态库,把动态库的路径添加到LD_LIBRARY_PATH或者/etc/ld.so.conf(如第8步)即可。

标签:编译,sudo,dev,OpenCV,源码,opencv,OpenCVSharp,安装
From: https://www.cnblogs.com/dx5800/p/18441176

相关文章

  • 校园二手交易平台的小程序+ssm论文源码调试讲解
    2系统开发环境2.1微信开发者工具微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。机型选择:小程序以智......
  • 云上考场小程序+ssm论文源码调试讲解
    2关键技术简介2.1微信小程序微信小程序,简称小程序,英文名MiniProgram,是一种全新的连接用户与服务的方式,可以快速访问、快速传播,并具有良好的使用体验。小程序的主要开发语言是JavaScript,它与普通web的开发有很多相似之处。小程序和普通网页开发并不是相同的东西,是有差......
  • 基于微信小程序的网上商城+ssm论文源码调试讲解
    2系统开发环境2.1微信开发者工具微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。机型选择:小程序以智......
  • springboot 游泳馆管理系统-计算机毕业设计源码91863
     目录摘要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 游泳馆管理系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分析2.4......
  • SpringBoot的摄影服务选购系统-计算机毕业设计源码91794
    摘要随着社会数字化的发展,人们对个性化服务和体验的需求不断增加,摄影服务行业也面临着更多线上服务的需求。摄影服务选购系统应运而生,该系统是一款基于Java语言、SpringBoot框架和MySQL数据库的在线平台,旨在满足日益增长的摄影服务需求。其开发背景源于对摄影服务行业数字化......
  • 【含文档+源码】基于SpringBoot的健身工作室管理系统的设计与实现
    项目背景与意义随着健身行业的快速发展,越来越多的消费者开始注重健康和身材管理,这使得健身房成为了一个蓬勃发展的行业。然而,随着客户数量的不断增加,如何有效管理客户信息,提供个性化服务,以及提升客户满意度,成为了健身房面临的重要挑战。传统的客户信息管理方式往往依赖于纸质......
  • 【开题报告+论文+源码】高校新生入学报到管理系统的设计与实现
    项目背景与意义随着信息技术的飞速发展和高校数字化建设的深入推进,高校新生入学报到管理面临着前所未有的挑战与机遇。传统的入学报到方式往往依赖于人工操作,不仅效率低下,而且容易出错,无法满足现代高校管理的需求。因此,开发一套高效、便捷的高校新生入学报到管理系统显得尤为......
  • 基于大数据爬虫+数据可视化与大数据分析的网络电视剧收视率分析系统设计与实现(附源码+
    博主介绍:CSDN毕设辅导第一人、全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、J......
  • <免费开题>基于Python二维码生成算法研究和实现|全套源码+文章lw+毕业设计+课程设计+数
    <免费开题>基于Python二维码生成算法研究和实现|全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要随着网络应用技术的普及和发展,计算机以及移动应用系统正在飞速的发展,通过互联网平台和移动端的应用技术帮助实现了智能化及数字化的管理模式,借助系统平台实现了高效便捷的管......
  • 基于数据可视化+Javaweb实现的物流管理系统设计与实现(源码+数据库+论文+部署+文档+讲
    文章目录前言系统演示录像论文参考代码运行展示图技术框架SpringBoot技术介绍系统测试系统测试的目的系统功能测试推荐选题:代码参考实现案例找我做程序,有什么保障?联系我们前言......