F10#----Emgucv高效遍历图像像素的两种方法

        Emgucv以及Opencv封装了大量的API,但大多数图像处理算法内部都是从操作每个像素开始的。有时候在工程应用中,我们不得不遍历图像的每个像素来实现我们的算法。

       举一个应用场景说明:一张图像的矩阵元素若存储的是3通道像素值,那么每个像素值的取值共有256*256*256种,用如此多的颜色来进行处理,会对我们的算法造成严重的影响,其实,我们只需要一部分像素值就可以了,这时候我们就可以遍历图像的每个像素来颜色空间缩减一下。

颜色空间缩减算法:给定一个整数,像素值/给定整数*给定整数。

     Emgucv版本:4.1.0

     .Net版本:4.6.1

(一)利用Image遍历像素

F10#----Emgucv高效遍历图像像素的两种方法_第1张图片

(二)利用指针直接访问内存遍历像素

F10#----Emgucv高效遍历图像像素的两种方法_第2张图片

(三)测试效果

      采用的Example.jpg输入图像分辨率为533*300。

       在同一台机器上测试第一种算法执行时间为15ms左右,第二种算法1ms左右,很明显利用指针直接操作内存遍历像素效率可以提升7倍左右。

       在对效率要求不太高的应用场景中,建议使用第一种算法,在.Net框架里使用比较方便。第二种算法虽然效率比较高,但对指针以及图像在内存中的分布要求较高,在C#里不建议使用非托管特性。

      源代码参见:https://download.csdn.net/download/dafenqie/11629006

       需要源码以及更过例程的朋友请加qq群609905705,专业的Emgucv学习群。

你可能感兴趣的:(Emgucv)