自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tfarcraw的博客

分享一些工作中的点滴积累

  • 博客(26)
  • 资源 (5)
  • 收藏
  • 关注

原创 [开源]OpenCVSharp工具

想用opencv做图像处理,无奈不会c++,幸好有opencvsharp,在学习过程中,发现需要一个工具来方便地看它的各个函数的处理效果,就想做一个。现在做出来个雏形,实现了部分功能。从gige相机采集图像,二值化等,下面用图片简单介绍一下。左区是源图像,可以从相机采集,也可以从电脑中选择图片,也可以从图片池中选择。图片可以加入图片池,源图像和处理结果,都可以加入,起个名字,点加入,然后就可以选择为源图像,供右区处理。处理区可以通过菜单调出需要的方法页面,配置相应的参数,执行方法,得到结果。

2020-08-15 21:32:45 6172

原创 WPF 使用 VisionMaster 算法平台SDK开发

海康的visionmaster使用方便,开发效率高,但比较复杂的应用场景还是用调用SDK方式来实现,官方有WinForm的DEMO,但没找到WPF,好久不写博客了,用这个水一篇吧。长这样:这个demo开源在我的gitee:opencvsharpvisionmaster: opencvsharp 和 visionmaster 的混合编程示例大概流程:1、开发时需要引用一些dll:方案相关 VM.PlatformSDKCS.dll ...

2021-10-13 16:41:18 3183 1

原创 微信二维码检测的C# 实现——opencvsharp Dnn Caffe推理部署

让深度学习助解码一臂之力

2021-09-16 21:25:14 2855

原创 PaddleOCR-2.1.1集成到opencv项目,在C#中调用

一、下载这3个https://github.91chifun.workers.dev//https://github.com/PaddlePaddle/PaddleOCR/archive/refs/tags/v2.1.1.ziphttps://paddle-wheel.bj.bcebos.com/2.0.2/win-infer/mkl/cpu/paddle_inference.zipPaddleOCR/quickstart.md at release/2.0 · PaddlePaddle/Pad

2021-06-14 14:26:45 2208 6

原创 使用开源工具OpencvsharpHelper测试Hog + svm机器学习效果

关于OpencvsharpHelper

2021-06-11 16:10:51 1208

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(七)对话窗口服务

如果你想在弹出窗口中进行一些简单的交互,tx MessageBox 足矣如果进行一些更自由的交互,或者你只是想定制弹出窗口的样式,Prism贴心地提供了对话窗口服务。

2021-06-06 17:05:22 317

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(六)MVVM

一、MVVM - 视图 与 后台逻辑 的解耦介绍MVVM是什么的文章很多,这里不再赘述,需要说明的是听到很多这样的说法:Prism就是MVVM框架,我觉得这样的说法是不对的,MVVM只是Prism框架中的一部分,是Prism解耦家族的一员。这里简单介绍一下在Prism中的一些关于MVVM相关小技巧。在Visual Studio 中有Prism Template Pack扩展,安装它之后可以更方便的帮助我们创建Prism程序模板,还会提供一些快捷代码段的支持,比如propp快速创建一个带通知...

2021-06-05 20:36:19 445

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(五)区域与导航

前面说的大多是后台逻辑的解耦,前端视图可不可以解耦呢?比如我要在某个区域内,灵活地调整显示内容,或者灵活的在不同的页面显示同一个内容,Prism能不能帮我们做到呢?当然能!Prism为我们提供了一揽子的解耦方案,当然包括视图的解耦。区域的设计就是为了视图的解耦。下面我们先简单看一下Demo中使用区域和导航的例子。第一步、在页面中创建一个区域,并为它起一个名字。第二步、通过依赖注入拿到区域管理器第三步、在模块中注册视图第四步、...

2021-05-26 13:32:02 245

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(四)事件聚合

订阅-发布模型本身就是弱耦合的——发布者不用关心有没有人订阅,订阅者不关心有没有人发布——这正契合了我们的主题。

2021-05-13 19:57:51 250

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(三)依赖注入

依赖注入设计的初衷即是解耦,依赖注入容器就像是一个什么都能装的大桶,你可以在一个模块中把一个东西丢进去,在本模块或其它模块再把它拿出来,这就为模块化编程提供了极大的方便与灵活性。Prism的许多功能都基于依赖注入容器,比如导航服务、对话窗体服务等,这是我不得不先介绍它的原因。示例中许多功能比如自动加载导航菜单、在各个窗体中共享用户信息、共享通讯对象、共享图像等都是使用依赖注入实现,这里我们介绍一下自动加载导航菜单的实现过程,希望大家通过这个简单功能,对依赖注入有个感性认识。自动加载导航菜单就是加

2021-05-11 12:53:03 654 1

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(二)模块

Prism是一个非常易用的框架,它不仅帮助我们方便地实现松耦合,就连它本身的各个知识点之间也是“松耦合”的,你不是非要等到完全清楚它的每一个知识点后才能使用它,我可以随意单独拎出一个来快速演示如何在项目中快速使用它,但一个更合理的顺序更有助于描绘它。知识的等级怎样的顺序才算是更合理呢?如果一个知识是从无到有的,能够填补一个空白,那这个知识就是高等级的,如果一个知识只是可以优化旧知识,那这个知识等级就相对较低。换一个说法,如果一个知识决定你能不能做到某事,就是高等级,如果只是能让你比原来做的更优雅

2021-05-09 19:51:18 370

原创 解耦!解耦!漫谈 XAML 应用程序开源框架 Prism(一)开篇

场景从一开始学习编程,各种教程都在碎碎念着弱耦合的事情,为什么要弱耦合呢?最重要的目的之一最大化的代码复用,设想一下,如果你经常要开发一些小程序,这些程序的部分内容略有不同,但它们都有着一些共同点,比如他们都需要有用户权限管理、日志、导航等等一系列共同内容,你如何去复用这些代码?复制粘贴大法是很多人的第一选择,但是如果你想在所有做过的程序修复同一个bug,那就会产生大量的重复劳动。弱耦合可以解决这些问题,但是我们具体应该怎么才能做到弱耦合呢?最直接的方法就是使用设计优良的框架。.

2021-04-27 22:14:04 650

原创 在C#中使用OpenCV 使用GOCW和opencvsharp,opencv和opencvsharp混合编程

看了一篇大神的文章在C#中使用OpenCV(使用GOCW)https://blog.csdn.net/jsxyhelu2015/article/details/111879116?spm=1001.2014.3001.5501讲了把opencv包装成c++/clr的方法,这样确实比使用opencvsharp多了许多优点,比如最新的opencv加入的微信扫码,opencvsharp就没有实现,用这个方法就能实现。但是小孩子才做选择,我当然全部都要!基于GOCW如果能实现opencv和opencvsh.

2021-04-09 23:52:35 1457 1

原创 OpenCVSharp 基于特征的图像拼接

拼接有多个意思,有的只是简单的两个图片怼成一张图,比如这样:怼成这样:OpenCVSharp 有这样的函数,简单说一下,就不上完整代码了://上下拼接 两图像宽度必须一样Cv2.VConcat(srcImg1, srcImg2, ret); //左右拼接 两图像高度必须一样Cv2.HConcat(srcImg1, srcImg2, ret);但多数时候,我们要拼接的图像们之间是有重合的部分,比如这样:对于这种场景,OpenCV...

2021-02-21 17:53:21 3330 7

原创 OpenCVSharp 灰度投影 向量约减

OpenCVSharp的Reduce函数(向量约减)和 Halcon的gray_projections(灰度投影

2021-02-03 15:28:16 836

原创 OpenCVSharp 分水岭算法

分水岭算法的原理大概就是在需要被区分的各个区域注入不同的颜色的水,这个水会染色它标志处的点,然后还会染色相邻的像素值差不多的点,不断漫延到像素值差异大的点停止。 public void Run() { Mat src = Cv2.ImRead("./Data/Image/lumu.jpg"); Console.WriteLine("用鼠标 标记前景,然后按键盘任意键。"); Cv2.ImSh

2021-01-31 18:24:09 783

原创 OpenCVSharp返回仿射变换后的完整图形

仿射变换后的图形如果还在原图框中显示,会有一部分显示不出来,这个函数的思路是计算原图的4个角转换后的位置,然后求最小外接矩,就得到了新图的大小,然后再看原点偏移在4个像限时的对齐方法,这里只是抛砖引玉一下,应该还有更好的方法。 /// <summary> /// 仿射变换 /// </summary> /// <param name="src">输入</par...

2021-01-30 18:57:16 541

原创 OpenCVSharp 小知识 Mat的序列化和反序列化

最近太忙,简单写写.OpenCVSharp提供了Mat的序列化和反序列化方法-----FileStorage类,下面简单演示用法, Mat src = new Mat(3, 3, MatType.CV_8UC1); Cv2.Randu(src, Scalar.All(0d), Scalar.All(255d)); Console.WriteLine("序列化:" ); Console.Write.

2020-12-15 22:16:15 1316

原创 【OpenCvSharp】求两直线的交点

原博客是opencv版本,转成opencvsharp非常方便 public static void Main() { Mat mat = new Mat(800, 800, MatType.CV_8UC3); Line2D l1 = new Line2D(100, 100, 100, 700); Line2D l2 = new Line2D(100, 700, 700, 100);.

2020-10-27 14:30:29 1368

原创 [OpenCvSHarp]小练习,计算仿射变换后的坐标

先用红点标出旋转中心的位置,用绿点标出转换前的位置变换之后,红圈圈出新的坐标改变旋转中心,角度,放大系数:结果:源码:public void Run() { Mat mat = new Mat(800, 800, MatType.CV_8UC3); //网络线 for (int i = 0; i <= 10; i++) {...

2020-10-26 23:17:57 1378

原创 OpenCVSharp 小练习 最大内接矩形

参考:https://blog.csdn.net/qq_35054151/article/details/88952728注意:这个可能不是最大内接矩形。输入图像:输出图像:代码: public void Main() { Mat src = Cv2.ImRead(FilePath.Image.Shapes, ImreadModes.AnyColor); Mat gray = new Ma..

2020-09-01 19:17:55 2600

原创 OpenCVSharp 小练习 最大内接圆

原图:代码: Mat src = Cv2.ImRead(FilePath.Image.Shapes); Mat gray = new Mat(); Mat binary = new Mat(); Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); Cv2.Threshold(gray, binary, 1, ..

2020-09-01 12:47:17 1716

原创 OpenCVSharp 小知识 2 点(Point)

代码: Mat mat = new Mat(600, 800, MatType.CV_8UC3); Point p1 = new Point(100, 100); Point p2 = new Point(400, 400); //画点 Cv2.Circle(mat, p1, 3, Scalar.Red, -1); Cv2.Circle(mat, p2, 3,

2020-09-01 10:26:24 2514

原创 OpenCVSharp 小知识 1 Mat 的格式化输出

Mat r =new Mat(5, 3, MatType. CV_8UC3); Cv2.Randu(r, Scalar.All(0d), Scalar.All(255d)); Console.WriteLine("直接输出:"); Console.WriteLine(r); Console.WriteLine("格式化输出:默认风格"); Console...

2020-08-31 22:39:02 1168 1

原创 使用海康威视SDK(MVS)&Basler.Pylon读取GigE相机到opencvsharp的Mat类型

在海康威视sdk的官方示例中加入opencvsharp读取图片数据到Mat类型。网上没找到这个方面的,自己研究了一下,其实关键代码就这句:Mat image = new Mat(FrameInfo.nHeight, FrameInfo.nWidth, MatType.CV_8U, pBufForDriver);理解了数据在内存中是什么样子就好了class GrabImage {...

2019-11-14 20:09:37 6967

原创 .net core程序 Win10中编译 树莓派中运行

.net core程序 Win10中编译 树莓派中运行引用大神博客安装 .net core runtime引入 System.Device.GPIO NuGet编写程序布署传送运行感谢打赏引用大神博客张高兴的 .NET Core IoT 入门指南https://www.cnblogs.com/zhanggaoxing/p/10311697.htmldathlin 在树莓派上运行 .net ...

2019-06-04 01:41:14 740

opencvsharp 助手

https://blog.csdn.net/tfarcraw/article/details/108028209?spm=1001.2014.3001.5501

2021-12-15

三菱PLC 高级技巧 ST语言实现 unix时间戳

首先,我们来思考一个问题,在三菱PLC中,你如何计算昨天的某个时间点,到现在为止过了多少秒? 可能有人会说,这个简单,我搞一个计数器,1秒增加1,不就完事了? 那么,如果中途断了几十分钟电呢? 有人可能马上会想到,系统提供了存储年月日时分秒的寄存器,我用今天的日期减去昨天的日期,今天的小时减去昨天的小时,今天的分钟…… 那么,昨天是30号,今天是1号呢?有些月昨天是31号,今天是1号。2月平年有28天,闰年有29天……有些同学可能已经开始构思一个非常复杂的功能块,你不妨先不要往下读,而是去试着自己去实现一下,然后回来再和下面的方法做一个对比,这样可能更能加深你的理解。 ...... ...... ...... 好吧,也许你已经自己试着实践了一把,下面我来说说我的方法: 如果我们能以一个固定的时间点做为锚点,用一个固定的方法,能够计算出任何时间点相对于这个锚点的时间量,那么任何两个时间点之间的量也就很容易求出。 unix时间戳就是我们要找的东西。 这个程序是用ST语言实现 unix时间戳。

2021-07-01

opencv标定工具.zip

opencv标定工具,鱼眼标定和张正友标定

2021-03-12

PID C# 实现 源码 学习PID的好资料 介绍见我的博客

PID C# 实现 源码 学习PID的好资料 介绍见我的博客,大家可以通过调节被控目标的参数干扰调节,然后研究PID的调节。

2020-07-07

MCGS触摸屏使用串口收发原始数据的例子

MCGS触摸屏使用串口收发原始数据的例子,用TPC7062TI测试过可以用,这个用途很多,比如可用于和扫码器通讯。

2020-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除