一个C#跨平台的机器视觉和机器学习的开源库
大家都知道OpenCV是一个跨平台的机器视觉和机器学习的开源库,可以运行在Linux、Windows、Android和Mac OS操作系统上,由C++开发。
今天给大家介绍一个用C#对OpenCV封装的处理库。
项目简介
它是OpenCV的.NET封装版本,项目名称为EmguCV,它使得.NET开发人员能够调用OpenCV函数,从而快速建立复杂的视觉应用。EmguCV库包括视觉的许多领域,如工厂产品检验、医学影像、用户接口、摄像机标定、立体视觉和机器人等。
核心功能
图像处理:提供了各种图像处理功能,如图像滤波、二值化、色彩空间转换、图像增强等。
计算机视觉:支持各种计算机视觉算法,如特征提取、目标检测、跟踪、人脸识别等。
模式识别:提供了模式识别算法,如支持向量机(SVM)、随机森林等。
深度学习:支持深度学习算法,如卷积神经网络(CNN)、循环神经网络(RNN)等。
OCR:可以结合Tesseract OCR引擎实现光学字符识别(OCR)功能,将图像中的文字转换为可编辑和可搜索的文本。
视频处理:提供了视频处理功能,如视频帧提取、视频编解码等。
几何变换:支持各种几何变换算法,如平移、旋转、缩放等。
图像分割:提供了各种图像分割算法,如基于阈值的分割、基于区域的分割等。
项目文件
项目特点
1、与OpenCV兼容:底层使用OpenCV库,因此它支持OpenCV的所有功能和算法。
2、高性能:通过高度优化的算法和底层优化,提供了高性能的图像处理和计算机视觉功能。
3、易于使用:提供了与.NET环境的无缝集成,使用者可以通过C#和VB等熟悉的编程语言来使用OpenCV的功能。
4、丰富的扩展:提供了许多扩展和示例,可以轻松地满足各种图像处理和计算机视觉需求。
使用示例
初始化
Tesseract ocr = new Tesseract(path, "eng.traineddata", OcrEngineMode.TesseractLstmCombined);
文字识别
ocr.SetImage(imageColor);
if (ocr.Recognize() != 0)
throw new Exception("Failed to recognizer image");
Tesseract.Character[] characters = ocr.GetCharacters();
if (characters.Length == 0)
{
Mat imgGrey = new Mat();
CvInvoke.CvtColor(image, imgGrey, ColorConversion.Bgr2Gray);
Mat imgThresholded = new Mat();
CvInvoke.Threshold(imgGrey, imgThresholded, 65, 255, ThresholdType.Binary);
ocr.SetImage(imgThresholded);
characters = ocr.GetCharacters();
imageColor = imgThresholded;
if (characters.Length == 0)
{
CvInvoke.Threshold(image, imgThresholded, 190, 255, ThresholdType.Binary);
ocr.SetImage(imgThresholded);
characters = ocr.GetCharacters();
imageColor = imgThresholded;
}
}
foreach (Tesseract.Character c in characters)
{
CvInvoke.Rectangle(imageColor, c.Region, drawCharColor.MCvScalar);
}
return ocr.GetUTF8Text();
识别效果
项目地址
https://github.com/emgucv/emgucv
更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单
最后推荐下,我现在正在编写教程:《.Net Core从零学习搭建权限管理系统教程》。
- End -
文章首发于公众号【编程乐趣】,欢迎大家关注。
一个C#跨平台的机器视觉和机器学习的开源库的更多相关文章
- 想要快速完成一个Python项目,离不开这些开源库
链接:https://opensource.com/article/18/9/python-libraries-side-projects 在Python / Django世界中有一句话:我们为语言而 ...
- Kubernetes入门(四)——如何在Kubernetes中部署一个可对外服务的Tensorflow机器学习模型
机器学习模型常用Docker部署,而如何对Docker部署的模型进行管理呢?工业界的解决方案是使用Kubernetes来管理.编排容器.Kubernetes的理论知识不是本文讨论的重点,这里不再赘述, ...
- Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架
Metalama是一个基于微软编译器Roslyn的元编程的库,可以解决我在开发中遇到的重复代码的问题.但是其实Metalama不止可以提供编译时的代码转换,更可以提供自定义代码分析.与IDE结合的自定 ...
- 一个千万量级的APP使用的一些第三方库
转载:http://www.jianshu.com/p/dc8c05cf693d .背景 前段时间在调研第三方推送服务的时候,反编译了一部分市面上比较流行的APP.其中一个无论是在设计还是功能上都堪称 ...
- Flink 另外一个分布式流式和批量数据处理的开源平台
Apache Flink是一个分布式流式和批量数据处理的开源平台. Flink的核心是一个流式数据流动引擎,它为数据流上面的分布式计算提供数据分发.通讯.容错.Flink包括几个使用 Flink引擎创 ...
- 跨平台的C++应用和UI开发库 QT
跨平台的C++应用和UI开发库 QT 运行环境: 授权方式:BSD 软件大小:M 下载量:3912 更新日期:2012-04-05 来源地址: 联系作者:Linux Qt是诺基亚开发的一个跨平 ...
- 25个Java机器学习工具和库
本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...
- 机器学习之scikit-learn库的使用
1.scikit-learn库简介 scikit-learn是一个整合了多种常用的机器学习算法的Python库,又简称skLearn.scikit-learn非常易于使用,为我们学习机器学习提供了一个 ...
- (原创)发布一个c++11开发的轻量级的并行Task库TaskCpp
TaskCpp简介 TaskCpp是c++11开发的一个跨平台的并行task库,它的设计思路来源于微软的并行计算库ppl和intel的并行计算库tbb,关于ppl和tbb我在前面有介绍.既然已经有了这 ...
- 转:25个Java机器学习工具和库
转自:http://www.cnblogs.com/data2value/p/5419864.html 本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习 ...
随机推荐
- 自用纯C语言实现任务调度(可用于STM32、C51等单片机)
前言 这个任务调度模块的实现是形成于毕设项目中的,用在STM32中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟 ...
- DG:switchover切换操作
问题描述:我们配置DG的目的就是为了在主库出现故障时,备库能够提供服务,保证业务的正常运行,switchover是用户有计划的进行停机切换,能够保证不丢失数据,我记录一下我进行switchover中的 ...
- [python] Python枚举模块enum总结
枚举是一种数据类型,在编程中用于表示一组相关的常量.枚举中的每个常量都有一个名称和一个对应的值,可以用于增强代码的可读性和可维护性.在Python中,枚举是由enum模块提供的,而不是Python提供 ...
- AspectCore和MSDI 实现Name注册以及解析对象
AspectCore 在注册服务这块比较简单,默认是无法根据Name去注册和解析对象,这边做一下这块的扩展 大致原理是根据自定义Name去生成对应的动态类型,然后使用委托或者对象的方式,进行注册 ti ...
- Centos 安装 python3.x 为默认
CentOS 7 中默认安装了 Python,但是版本是2.x的,由于2020年python2.x将停止更新,因此需要将版本升级至3.x.但由于python2.x是系统集成的,很多命令都是要基于pyt ...
- 从零开始基于Archlinux 安装 containerd + k8s
下载ISO文件:https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/ 目录 1. 准备工作 2. 磁盘管理 2.1 磁盘分区 2.2 磁 ...
- Linux运维实战项⽬进阶
项⽬描述 项⽬需求 近年来为适应业务发展的需求,世界500强XX企业准备进⾏⼤规模的电⼦商务建设, 同时,希望能通过Linux平台,利⽤开源技术,来实现⼤型互联⽹电⼦商务⽹站架构建设和业务⽀撑,现要求 ...
- JavaWeb之day01html
目录: 1.html简介 - html的操作思想(*****) 2.文字标签和注释标签 3.标题标签.水平线标签和特殊字符 4.列表标签 5.图像标签(********) 6.路径介绍(相对路径*** ...
- 2021-07-19:给定一个正数N,比如N = 13,在纸上把所有数都列出来如下: 1 2 3 4 5 6 7 8 9 10 11 12 13,可以数出1这个字符出现了6次,给定一个正数N,如果把1
2021-07-19:给定一个正数N,比如N = 13,在纸上把所有数都列出来如下: 1 2 3 4 5 6 7 8 9 10 11 12 13,可以数出1这个字符出现了6次,给定一个正数N,如果把1 ...
- Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考
本篇参考:https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_sale ...