OpenCV C# 测试


OpenCvSharp 项目地址: https://github.com/shimat/opencvsharp
OpenCvSharp 文档地址: https://shimat.github.io/opencvsharp_docs/index.html

Windows 下建立C#项目

  • 使用NuGet
    项目→管理NuGet包→浏览并安装OpenCvSharp4OpenCvSharp4.runtime.win两个NuGet包。
    或者
    项目→管理NuGet包→浏览并安装OpenCvSharp4.Windows这一个合成包。
  • 自行从release page下载 DLL文件
    下载地址:https://github.com/shimat/opencvsharp/releases
    自行下载并引用所需要的DLL文件。

建立测试程序

// Edge detection by Canny algorithm
using OpenCvSharp;
class Program 
{
    static void Main() 
    {
        Mat src = new Mat("lenna.png", ImreadModes.Grayscale);
        // Mat src = Cv2.ImRead("lenna.png", ImreadModes.Grayscale);
        Mat dst = new Mat();
        
        Cv2.Canny(src, dst, 50, 200);
        using (new Window("src image", src)) 
        using (new Window("dst image", dst)) 
        {
            Cv2.WaitKey();
        }
    }
}

在Debug目录下放入一张图片:lenna.png。运行后就可以看到两个弹出窗口,分别是图片的源图和铅笔画风格处理过的图片。

OpenCV中Mat的基本用法

在类 cv::Mat 中,图像数据以 unsigned char 形式保存在一块内存中。这块内存的首地址可以通过data成员变量得到。data是一个 unsigned char 型的指针,所以循环图像数据可以以如下方式开始:

uchar *data = image.data;

从当前行到下一行可以通过对指针加上 行宽 完成:

data += image.step; 	//下一行

step代表图像的行宽(包括填补像素),所以可以通过如下方式获得第j行第i列的像素的地址:

data = image.data + j * image.step + i * image.elemSize();
  • Mat image(240, 320, CV8UC3);
    第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一个大小为240×320的矩阵,里面的元素为8位unsigned型,通道数(channel)有3个。
  • image.create(480, 640, CV8UC3);
    分配(或重新分配)image矩阵,把大小设为480×640,类型设为CV8UC3。

和C#的接口类OpenCvSharp.Extensions

因为OpenCV的程序大部分是用C++写的,OpenCV类里缺少和C#的类型转换。这个类里提供了一些静态方法来转换OpenCV类型和C#类型。

static Bitmap OpenCvSharp.Extensions.BitmapConverter.ToBitmap(Mat mat);	//Mat 转 Bitmap
static Mat OpenCvSharp.Extensions.BitmapConverter.ToMat(Image bitmap);	//Bitmap 转 Mat

学习OpenCvSharp最新的示例包

下载地址: https://github.com/shimat/opencvsharp/releases
找到Sample-4.1.0-20190417.zip,下载解压。用VS2017打开、重新编译。。。错误提示:

The current .NET SDK does not support targeting .NET Core 2.0.  Either target .NET Core 1.1 or lower, or use a version of the .NET SDK that supports .NET Core 2.0.

说是我的电脑里没有安装.NET Core 2.0。去微软的网站下载一个。如果运行平台是x86就下x86的包,是x64就下x64的。
下载地址: https://dotnet.microsoft.com/download/dotnet-core
下载完成后安装。然后cmd输入命令dotnet --info检查,显示安装成功。
在这里插入图片描述
再次编译运行,成功!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值