EMGU.CV
LyRics1996
人生天地间,忽如远行客
展开
-
EMGU.CV入门(二十一、图片的素描、卡通、增强、磨皮)
一、效果二、函数说明2.1 细节增强2.2 铅笔2.3 磨皮2.4 卡通三、代码3.1 MainViewModelusing Emgu.CV;using Emgu.CV.CvEnum;using Emgu.CV.Structure;using System;using System.ComponentModel;using System.Drawing;using System.Drawing.Imaging;using System.IO;using System原创 2022-02-02 21:56:48 · 2851 阅读 · 0 评论 -
EMGU.CV入门(十九、图像角点)
一、理论1.1 角点、边缘、团块边缘(edge)团块(flat)角点(corner)1.2 Harris算法思想思想是用小窗口在图像上平移,如果窗口内像素:沿任意方向变化不明显(flat)沿某一方向变化不明显(edge)沿任意方向明显变化(corner)1.3 Harris算法实现移动区域前后对应位置差的平方其中 W为权重,x,y为移动方向,u,v为在x,y上的偏移量一阶泰勒展开将2代入1,化简将M代入其中:n阶实对称矩阵A必有n个原创 2021-12-09 22:00:28 · 684 阅读 · 0 评论 -
EMGU.CV进阶 (二、文档OCR)
一、效果原图识别:二、图像变换2.1 加载原图 var imgO = CvInvoke.Imread("OCR1.png"); var imgO1 = imgO.Clone(); //备用 CvInvoke.Imshow("imgO",imgO);2.2 转为灰度 var imgGray = CvInvoke.Imread("OCR1.png", 0); CvInvo原创 2021-12-08 23:06:33 · 1253 阅读 · 0 评论 -
EMGU.CV进阶 (一、银行卡识别)
一、效果识别出银行卡上的数字,并显示注:本文所用所有知识,均在入门系列提到过原图:效果:二、模板制作目的,将10个数分成10个模板2.1 加载模板var imgTemplate = new Mat("NumberTemplate.png");CvInvoke.Imshow("template", imgTemplate);2.2 转为灰度var imgTemplateGray = new Mat();CvInvoke.CvtColor(imgTemplate, imgTem原创 2021-12-07 23:36:04 · 3870 阅读 · 0 评论 -
EMGU.CV入门(十八、视频操作)
一、读取视频1.1 从摄像头读取VideoCapture videoCapture = new VideoCapture(0); // 只有一个摄像头就写0while (true) { Mat frame = new Mat(); videoCapture.Read(frame); // 读取一帧 CvInvoke.Imshow("video", frame); // 显示 if (CvInvoke.WaitKey(30) == 27) // 显示原创 2021-12-06 22:02:48 · 4437 阅读 · 0 评论 -
EMGU.CV入门(十七、傅里叶变换)
一、效果二、代码 // 1.加载原图var image1 = new Image<Bgr, byte>("bird1.png");var image0 = image1.Mat.Clone();PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(Text(image1.Bitmap, "原图")));// 2. 原图转灰度var imgGray = new Mat();CvInvoke.CvtColor(image0原创 2021-12-06 20:57:25 · 2792 阅读 · 0 评论 -
EMGU.CV入门(十六、图像直方图)
一、图像直方图1.1 计算直方图 // // 摘要: // Calculates a histogram of a set of arrays. // // 参数: // images: // Source arrays. They all should have the same depth, CV_8U or CV_32F , and the //原创 2021-12-05 23:17:02 · 1925 阅读 · 0 评论 -
EMGU.CV入门(十五、模板匹配)
一、函数介绍1.1 MatchTemplate模板匹配函数参数说明参数1:输入图像参数2:匹配模板参数3:返回矩阵参数4:算法类型其中算法类型共计六种: // // 摘要: // This function is similiar to cvCalcBackProjectPatch. It slids through image, // compares overlapped patches of size原创 2021-12-05 21:44:20 · 2327 阅读 · 0 评论 -
EMGU.CV入门(十四、图像轮廓)
一、轮廓1.1 边缘和轮廓的区别边缘:离散的,断开的轮廓:整体的,连续的边缘检测主要是通过一些手段检测数字图像中明暗变化剧烈(即梯度变化比较大)像素点,偏向于图像中像素点的变化。如canny边缘检测,结果通常保存在和源图片一样尺寸和类型的边缘图中。轮廓检测指检测图像中的对象边界,更偏向于关注上层语义对象。如OpenCV中的findContours()函数, 它会得到每一个轮廓并以点向量方式存储,除此也得到一个图像的拓扑信息,即一个轮廓的后一个轮廓、前一个轮廓、父轮廓和内嵌轮廓的索引编号。1.2原创 2021-12-04 00:23:20 · 2805 阅读 · 3 评论 -
EMGU.CV入门(十三、图像金字塔)
一、图像金字塔1.1 高斯金字塔向上采样法(放大操作)向下采样法(缩小操作)它们不是互逆的操作,这两种操作都会一定程度上的丢失图像信息。1.2 拉布拉斯金字塔用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。L 为第i层结果,G 为第i层图像,Up 向上操作, Down 向下操作用通俗的话可以理解为,拉布拉斯金字塔得到的结果是,高斯金字塔每一场先缩小再放大丢失的图像信息。二、代码与效果2.1 效果2.原创 2021-12-03 22:09:54 · 703 阅读 · 0 评论 -
EMGU.CV入门(十二、Canny边缘检测)
一、Canny边缘检测Canny边缘检测是一种非常流行的边缘检测算法,是John Canny在1986年提出的。它是一个多阶段的算法,有以下四个步骤组成。1.1 图像降噪噪声对图像影响很大,所以首先需要进行滤波,去掉噪声的干扰这一步使用的是高斯滤波(前文中有提到),而高斯滤波主要使图像变得平滑(模糊),同时也有可能增大了边缘的宽度。1.2 计算图像梯度计算图像梯度能够得到图像的边缘,因为梯度是灰度变化明显的地方,而边缘也是灰度变化明显的地方。这一步通常使用的是sobel算子,在前文有提到过,这原创 2021-12-03 20:51:47 · 2366 阅读 · 0 评论 -
EMGU.CV入门(十一、Scharr和laplacian)
一、效果说明:之前的EMGU.CV 版本都是3.3.0.2824 ,比较古老,没有Scharr算子而最新的4.5.3.4721 没有转换bitmap的方法最后比较一下,之后使用的版本为4.1.0.3408二、代码 // 1. 加载原图 var image1 = new Image<Bgr, byte>("bird1.png"); var image0 = image1.Mat.Clone(); PreviewImage1 = new WriteableBitmap(Bitmap原创 2021-12-03 00:23:37 · 1946 阅读 · 0 评论 -
EMGU.CV入门(十、图像梯度)
一、梯度通常用来检测边缘,边缘梯度变化较大。二、代码 // 1. 加载原图var image1 = new Image<Bgr, byte>("bird1.png");var image0 = image1.Mat.Clone();PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(Text(image1.Bitmap, "原图")));// 2. 转为灰度(当然也可以直接读取为灰度)Mat image2 = new原创 2021-12-02 23:16:46 · 565 阅读 · 0 评论 -
EMGU.CV入门(九、形态学操作)
一、常见形态学操作二、代码 // 1. 加载原图 var image1 = new Image<Bgr, byte>("test.png"); var image0 = image1.Clone(); PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(Text(image1.Bitmap, "原图"))); // 2. 膨胀 将黑色变小,白色变大 var image2 = new Image<Bgr, byte原创 2021-12-02 21:10:44 · 1833 阅读 · 0 评论 -
EMGU.CV入门(八、绘图函数)
一、效果二、常用函数2.1 添加文字//// 摘要:// Renders the text in the image with the specified font and color. The printed// text is clipped by ROI rectangle. Symbols that do not belong to the specified// font are replaced with the rectangle symbol.//原创 2021-12-01 23:09:40 · 1051 阅读 · 0 评论 -
EMGU.CV入门(七、图片阈值)
一、阈值当像素值高于阈值时,我们给这个像素赋予一个新值,否则给他赋予另一个值。二、 固定阈值/简单阈值double Threshold(IInputArray src, IOutputArray dst, double threshold, double maxValue, ThresholdType thresholdType)Threshold方法的第五个参数类型如下THRESH_BINARYTHRESH_BINARY_INVTHRESH_TRUNCTHRESH_TOZEROTHRE原创 2021-12-01 22:37:04 · 875 阅读 · 0 评论 -
EMGU.CV入门(六、图片融合)
一、效果二、ROIROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。 // 1. 加载原图1 var image1 = new Image<Bgr, byte>("bird1.png"); PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(image1.Bitmap));原创 2021-12-01 21:53:15 · 938 阅读 · 0 评论 -
EMGU.CV入门(五、图片变换)
一、效果二、代码 // 1. 加载原图1 var image1 = new Image<Bgr, byte>("bird1.png"); PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(image1.Bitmap)); // 2. 图像放大 var image2 = new Image<Bgr, byte>(image1.Width * 2, image1.Heig原创 2021-11-30 23:39:26 · 781 阅读 · 0 评论 -
EMGU.CV入门(四、图片运算)
一、图像的加减乘除 // 1. 加载原图1 var image1 = new Image<Bgr, byte>("bird1.png"); PreviewImage1 = new WriteableBitmap(Bitmap2BitmapImage(image1.Bitmap)); // 2. 加载原图2 var image2 = new Image<Bgr, byte>("bird2.png"); PreviewImage2 =原创 2021-11-30 22:13:48 · 1297 阅读 · 0 评论 -
EMGU.CV入门(三、图片分割)
一、目的将图中的鸟进行剥离;gitee地址二、配置同第一篇三、主要逻辑四、代码4.1 mainviewmodelusing Emgu.CV;using Emgu.CV.CvEnum;using Emgu.CV.Structure;using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Drawing.Imaging;原创 2021-10-21 23:04:31 · 1032 阅读 · 0 评论 -
EMGU.CV入门(二、图片滤波)
一、目的测试几种不同滤波的使用方式和效果gitee地址二、配置见文章一三、主要逻辑四、代码4.1 mainviewmodelusing Emgu.CV;using Emgu.CV.CvEnum;using Emgu.CV.Structure;using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Drawing.Im原创 2021-10-21 22:03:29 · 678 阅读 · 0 评论 -
EMGU.CV入门(一、图片色彩空间转换)
一、目的读取一张图片,然后对其进行色彩空间转换,如下图所示Gitee地址二、配置注:若无特殊说明,之后的文章统一此配置采用WPF+MVVM的模式来写.net Framework 4.7.2EMGU.CV 3.3.0.2824三、viewmodel创建6个被需要被绑定的WriteableBitmap封装Bitmap2BitmapImage函数初始化时,加载图片处理函数四、XAML两行三列五、代码5.1 XAML<Window x:C原创 2021-10-21 21:10:08 · 1329 阅读 · 0 评论