Tag: aforge

使用C#从BitmapData裁剪区域

我有一个位图sourceImage.bmp 锁定它的位: BitmapData dataOriginal = sourceImage.LockBits(new Rectangle(0, 0, sourceImage.Width, sourceImage.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); 做分析, 得到一个克隆 : Bitmap originalClone = AForge.Imaging.Image.Clone(dataOriginal); 解锁位: sourceImage.UnlockBits(dataOriginal); 是否可以指定要复制的“dataOriginal”的哪一部分(x,y,w,h)? 或者从dataOriginal创建新数据,指定X和Y坐标以及H和W? 目的是从该图像中复制一个小区域。 这个方法可能比DrawImage更快,这就是我不使用后者的原因。 编辑: 所以我拿了29 Mb位图并进行了一些硬核测试! 全尺寸裁剪(基本上是副本)+ 100次迭代。 码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AForge; using AForge.Imaging; using System.Diagnostics; using System.Drawing.Imaging; […]

如何初始化AForge网络摄像头

我尝试使用Aforge编写一个小的代码来捕获一个框架我引用了Aforge.dll和AForge.Video.DirectShow.dll代码如下,但我做错了。 警告我得到“名称videoDevices在当前上下文中不存在。我认为它有关于我尝试创建该变量的位置,但我不确定在哪里放置该按钮的代码以使其初始化。错误在visual studio中显示为对象“videoDevices”下的红线 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AForge; using AForge.Video.DirectShow; namespace AforgeCam { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) throw new […]

图像焦点计算

我正在尝试为一些测试自动化工作开发图像聚焦算法。 我选择使用AForge.net,因为它看起来像一个很好的成熟.net友好系统。 不幸的是,我似乎无法从头开始找到有关构建自动对焦算法的信息,所以我给了它最好的尝试: 拍照。 应用sobel边缘检测滤波器,生成灰度边缘轮廓。 生成直方图并保存标准开发。 将相机移近主体一步并拍摄另一张照片。 如果标准开发小于前一个,我们将获得更多关注。 否则,我们已经超过拍摄照片的最佳距离。 有没有更好的办法? 更新:顺便说一下,这有很大的缺陷。 当我超越最佳焦点时,我的“焦点图像”价值继续增长。 你期望抛物线函数看距离/焦点值,但实际上你会得到一些更对数的东西 更新2:好的,所以我回到这个,我们正在探索的当前方法给出了一些已知的边缘(好吧,所以我确切地知道图片中的对象是什么),我做了手动像素强度比较。 随着结果图变得越来越陡峭,我得到了更多关注。 一旦核心算法从matlab移植到c#(是的,matlab ..:S),我就会发布代码 更新3:yay最终更新。 又回来了。 最终的代码如下所示: 第1步:从图像列表中获取图像(我通过聚焦点拍摄了一百张照片) 第2步:找到我正在聚焦的物体的边缘(在我的情况下,它是一个总是在同一个地方的矩形物体,所以我裁剪出一个边缘的HIGH和NARROW矩形) 第3步:获取该裁剪图像的Horizo​​ntalIntensityStatistics(Aforge.net类)。 第4步:获取直方图(灰色,在我的情况下) 步骤5:找到直方图值的导数 第6步:当你的坡度最大时,就是你处于最集中的地方。

在c#中查找图像中的颜色

我偶然发现了这个youtubevideohttp://www.youtube.com/watch?v=Ha5LficiSJM ,它演示了使用AForge.NET框架进行颜色检测的人。 我想复制作者所做的但我不知道如何做一些图像处理。 似乎AForge.NET框架允许您从Bitmap格式的video源下拉图像。 我的问题是,有人可以指出我的方向或提供一些指导如何询问Bitmap对象,以找到其中的特定颜色? (例如 – 如果图像中有“红色”或“紫色”持续X秒,我想提出一个事件’ColorDetected’左右……) 有没有人有什么建议从哪里开始? 谢谢, -R。 编辑:我是否需要遍历整个Bitmap对象并询问每个像素的颜色? 像这样: http : //msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx

将Kinect ColorImageFrame转换为Bitmap

我在XNA上使用Kinect(Microsoft SDK)。 我想使用GRATF进行标记识别 如何将Kinect AForge.Imaging.UnmanagedImage的数据转换为可以使用GRATF处理它们的System.Drawing.Bitmap或AForge.Imaging.UnmanagedImage? void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { Bitmap bitmap = null; ColorImageFrame frame = e.OpenColorImageFrame(); byte[] buffer = new byte[frame.PixelDataLength]; frame.CopyPixelData(buffer); // how to convert the data in buffer to a bitmap? var glyphs = recognizer.FindGlyphs(bitmap); … }