相比于基于c++的Opencv来说,Accord的大部分都是基于c#,偶尔会有托管调用来执行一些功能
这里使用的用例,基于官方文档所提供的样例,我在理解结构的过程中修改了窗口的一部分。
网盘链接:http://pan.baidu.com/s/1bpzA7AR 密码:yv2d
FAST算法是一种角点检测算法,具体的原理可以看这里对Opencv官方文档所进行的翻译:http://blog.csdn.net/candycat1992/article/details/22285979
Accord作为一个c#的类库,只要短短的几句就能完成,非常便捷,交互性也不错(相对于使用mfc或者cmd的opencv来说)。通过winform,wpf,我们可以简单的调用。
总的来说就只有三个文档为主
原先的文件只是利用了工程文件夹中的图片,为固定的图片调用与演示,为了更好的试验所以
我追加了一个OpenFile按钮和一个textbox控件
代码如下(用textbox来保存文件路径):
private void button2_Click(object sender, EventArgs e) { if (DialogResult.OK == openFileDialog1.ShowDialog()) { textBox1.Text = openFileDialog1.FileName; pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); } if(textBox1.Text.Length >0) { lenna.Dispose(); lenna = new Bitmap(openFileDialog1.FileName); } }
整个程序的大致调用过程:
读取目标图片-----》图片存入内存-----》设置FAST的临界值与抑制(?)------》应用FAST到图像上------》在picturebox控件上显示处理后的图片
其中还有对描点颜色的配置
==================================================================
创建新的FAST结构的实例化fast类,并直接进行配置
FastCornersDetector fast = new FastCornersDetector() { Threshold = (int)numThreshold.Value, Suppress = true };
创建一个新的FAST滤波,第二个参数就是描点的颜色 CornersMarker corners = new CornersMarker(fast, Color.DarkSeaGreen);
这一句就是应用滤波器结果并显示到picturebox上面 pictureBox1.Image = corners.Apply(lenna);
使用这一句
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
来选定后面的pB图像位置,打开文件实际上是选定文件的路径。
如果选用的文件路径正确那么就释放原先图片并载入该图片
if(textBox1.Text.Length >0) { lenna.Dispose(); lenna = new Bitmap(openFileDialog1.FileName); }
临界值40
减少临界值为20