首页 > 系统相关 >【OpenCV】在Linux上使用OpenCvSharp

【OpenCV】在Linux上使用OpenCvSharp

时间:2024-01-31 12:23:29浏览次数:21  
标签:项目 image 程序包 OpenCV OpenCvSharp Linux 安装

前言

OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。OpenCvSharp是一个OpenCV的 .Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,该库采用LGPL发行,对商业应用友好。

@

目录

1. 项目环境

  • 编码环境:Visual Studio Code
  • 程序框架:.NET 6.0

  目前在Linux上使用C#语言官方提供了Visual Studio Code平台,所以在此处我们演示使用Visual Studio Code进行演示。而代码的运行与配置使用dotnet指令实现。

  关于Visual Studio Code以及.NET的安装方式可以参考一下官方教程:

在 Linux 上安装 .NET:由于Linux系统环境类型较多,所以可以根据官方提供的教程并根据自己的系统安装即可;

Visual Studio Code on Linux:大家可以根据自己的环境进行安装。

2. 创建控制台项目

  此处使用dotnet指令创建新项目,在Visual Studio Code的终端中输入一下指令:

dotnet new console --framework net6.0 --use-program-main -o test_opencvsharp

  如下图所示,在终端中输入以下指令后,会自动创建新的项目以及项目文件夹。
image

  在创建好项目后,我们使用vscode打开,输入以下指令,如下图所示:

test_opencvsharp
code .

image

3. 添加 Nuget Package 程序包

  OpenCvSharp4是一个可以跨平台使用的程序包,并且官方也提供了编译好的程序包,用户可以根据自己的平台进行安装。在Linux上,主要需要安装一下两个包,分别是OpenCvSharp4的官方程序包以及OpenCvSharp4的运行依赖包。

dotnet add package OpenCvSharp4
dotnet add package OpenCvSharp4_.runtime.ubuntu.20.04-x64

  依次输入指令后输出如下图所示:
image
image

  安装完上面两个安装包后,项目的配置的文件中会增加下面两个配置。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="OpenCvSharp4" Version="4.9.0.20240103" />
    <PackageReference Include="OpenCvSharp4_.runtime.ubuntu.20.04-x64" Version="4.9.0.20240103" />
  </ItemGroup>

</Project>

  接下来运行dotnet run,检验项目中是否包含所需要的配置文件:OpenCvSharp.dllruntimes/ubuntu.20.04-x64/native/。打开项目运行生成的文件夹bin/{build_config}/{dotnet_version}/,在本项目中是bin/Debug/net6.0/文件夹,如下图所示:

image

可以看出,在程序运行后,安装的程序包中所有项目都已经加载到当前项目中,如果出现缺失,就需要找到程序包位置,将该文件复制到指定路径。

5. 安装依赖项目

  在上面的测试中,并为使用到安装的OpenCvSharp4,因此运行并未出现其他错误,如果主机电脑之前没有安装使用过OpenCV,所以第一次使用需要配置依赖项目。
  首先第一步检查一下缺少什么依赖项,在终端中输入以下指令:

ldd libOpenCvSharpExtern.so

image

  如上图所示,经过ldd检测后,发现存在未安装的依赖,接下爱就是安装相应的依赖项,首先是解决tesseract缺少,在终端输入以下指令:

sudo apt install tesseract-ocr

  安装完成后再进行依赖项检测,如下图所示:
image

  可以看出,经过安装后,该依赖项已经可以检测到,接下来就是安装其他依赖项,依次输入以下指令即可:

sudo apt install libdc1394-dev
sudo apt install libavcodec-dev 
sudo apt install libavformat-dev
sudo apt install libswscale-dev
sudo apt install libopenexr-dev

  最后,安装完成后,在进行检测,如下图所示,可以看出,目前已经成功检测到所有依赖项,程序就可以正常使用了。
image

4. 测试应用

  最后我们编写项目代码进行测试,如下面代码所示:

using System;
using OpenCvSharp;
namespace test_opencvsharp 
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Mat image = Cv2.ImRead("image.jpg");
            Mat image2=new Mat();
            if (image!=null)
            {
                Console.WriteLine("srcImg is OK!");
            }
            Console.WriteLine("图像的宽度是:{0}",image.Rows);
            Console.WriteLine("图像的高度是:{0}", image.Cols);
            Console.WriteLine("图像的通道数是:{0}", image.Channels());
            Cv2.ImShow("src", image);
            Cv2.CvtColor(image, image2, ColorConversionCodes.RGB2GRAY);//转为灰度图像
            Cv2.ImShow("src1", image2);
            Cv2.WaitKey(0);
            Cv2.DestroyAllWindows();//销毁所有窗口
        }
    }
}

  项目代码运行后,最后呈现效果如下图所示:

image

5. 总结

  在本次项目中,我们成功实现了在Linux上使用OpenCvSharp,并成功配置了OpenCvSharp依赖库,实现了在.NET 6.0环境下使用C#语言调用OpenCvSharp库,实现的图片数据的读取以及图像色彩转换,并进行了图像展示。

标签:项目,image,程序包,OpenCV,OpenCvSharp,Linux,安装
From: https://www.cnblogs.com/guojin-blogs/p/17999002

相关文章

  • Linux服务器Crontab定时任务配置
    Linux服务器Crontab定时任务配置  1、检查linux系统是否有crontabrpm-qa|grepcrontab2、如果未安装进行安装yum-yinstallvixie-cronyum-yinstallcrontabs3、crontab启动、停止、运行状态systemctlstartcrond启动systemctlstopcrond停止sy......
  • Oracle DCD和Linux TCP KeepAlive和网络硬件防火墙探讨
     OracleDCD和LinuxTCPKeepAlive和网络硬件防火墙探讨 Oracle的某些会话在超时断开后在警告日志抛出一定量类似如下日志:FriAug1917:51:322022***********************************************************************FatalNIconnecterror12170.VERSIO......
  • Linux下的查看已安装软件、卸载
    因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了,总结起来有这样几类:1、使用rpm包方式安装的,可以用rpm-qa命令查看到,如果要查找某软件包是否安装,用rpm-qa|grep“软件或者包的名字”。例如,查看有没有ruby:[root@hexuweb102~]rpm-qa|gre......
  • Linux脚本之文件内容去重脚本
    前言脚本为自用脚本,用于在Linux上完成文件内容的去重工作,但是此文件对二进制文件无效,只针对文本文件进行去重脚本内容#!/bin/bash#检查参数是否正确if[$#-ne1];thenecho"用法:$0<文件名>"exit1fi#获取指定文件的文件名filename=$1#使用sort和uniq......
  • linux系统根目录扩容
    linux系统根目录扩容系统版本:CentOSLinuxrelease7.5.1804(Core)文件系统类型:xfs基本概念:PV(PhysicalVolume)-物理卷物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。VG(VolumneGroup)-卷组卷组建立在物理卷之上,一个卷......
  • Linux端口被占用
    以下是一些解决Linux端口被占用的方法:step1.使用lsof命令查找占用端口的进程在终端中使用以下命令可以查找指定端口被哪个进程占用:sudolsof-i:端口号例如,要查找端口号为8080的进程,可以使用以下命令:sudolsof-i:8080该命令将返回占用该端口的进程的详细信息,包......
  • 如何在Windows上和Linux上配置自启动服务?
    我们以FastTunnel这个内网穿透工具为例,其中Server端的程序运行在Linux上,Client端的程序运行在Windows上。关于这个程序的配置请参考官方文档:快速上手:快速搭建服务。为了避免每次手动启动程序,我们把它们做成开启自启动的服务,这样你就可以无缝使用远程桌面了。Windows下载n......
  • Kali学习笔记-01-安装Kali Linux2
    Kali学习笔记-01-安装KaliLinux2KaliLinux网络安防使用的VMWare版本信息如下:kaliLinux下载网页是https://www.kali.org/get-kali/#kali-virtual-machines。在页面上选择VMware64位版本下载。下载之后得到一个.7z的压缩文件,名字为kali-linux-2023.4-vmware-amd64.7z,解压缩......
  • Ali Cloud Linux3 : Installing ImageMagick for PHP 7.4
    Step1:Ifnotalreadyinstalled,installthephp-develandgccpackages.$sudoyuminstallphp-develgccTocheckifthepackagesareinstalled,usethefollowingcommands.Ifeithercommandreturnsanemptyresult(orbothdo),you’llneedtoinstallth......
  • 实战:Linux系统存储扩展【已存在挂载点】
    概述此指南提供了在Linux系统中扩展已存在挂载点的步骤,适用于使用LVM管理的逻辑卷。步骤1.识别新硬盘命令:lsblk目的:确定新添加的硬盘的设备名称(例如/dev/vdb)。2.确定卷组名称命令:vgs目的:查找要扩展的逻辑卷所属的卷组名称(如centos)。3.检查文件系统......