Main Page: Difference between revisions
Line 21: | Line 21: | ||
== Latest News == | == Latest News == | ||
* 2008-03- | * 2008-03-22 [[Nightly Build]] of Emgu.CV-1.2.2.0 is available, changes in this version includes | ||
** <code>AsBitmap()</code> function added as a high performance alternative to <code>ToBitmap()</code> function | ** <code>AsBitmap()</code> function added as a high performance alternative to <code>ToBitmap()</code> function | ||
*** Note: <code>AsBitmap()</code> differs from <code>ToBitmap()</code> such that when dealing with Image<Gray, Byte> and Image<Bgr, Byte>, the image data is shared with Bitmap. Take extra caution not to use the Bitmap after the Image object is disposed | *** Note: <code>AsBitmap()</code> differs from <code>ToBitmap()</code> such that when dealing with Image<Gray, Byte> and Image<Bgr, Byte>, the image data is shared with Bitmap. Take extra caution not to use the Bitmap after the Image object is disposed | ||
Line 37: | Line 37: | ||
*** In Moment class: GetSpatialMoment, GetCentralMoment, CvHuMoment | *** In Moment class: GetSpatialMoment, GetCentralMoment, CvHuMoment | ||
** Fix a bug in Circle that prevent it from being XML serialized | ** Fix a bug in Circle that prevent it from being XML serialized | ||
Revision as of 20:37, 27 March 2008
Emgu CV is a cross platform .Net wrapper to the Intel OpenCV image-processing library. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB, VC++, IronPython etc. The wrapper can be compiled in Mono and run on Linux / Solaris / Mac OS X.
Advantage of Emgu CV
Cross Platform
Unlike other wrappers such as OpenCVDotNet or SharperCV which are written in Managed C++, Emgu CV is written entirely in C#. The benifit is that it can be compiled on Mono and therefore is able to run on any platform Mono supports, be it Linux / Solaris or Mac OS X. I have spend a lot more effort to have an implementation in C# since the headers has to be ported, compares with managed C++ such that header files can simply be included. But it is well worth it once I see Emgu CV running on my Fedora 8! Plus it always give you the comfort knowing that your code is cross-platform.
Other Advantages
- Image class with Generic Color and Depth
- Automatic garbage collection
- Generic operations on image pixels
- XML Serializable Image
- XML Documentation and intellisense support
- The choice to either use the Image class or directly invoke functions from OpenCV
Architecture Overview
Emgu CV has two layers of wrapper as shown below
- The basic layer (layer 1) contains function, structure and enumeration mapping which directly reflect those in OpenCV.
- The second layer (layer 2) contains class that mixed in advatange from the .Net world.
Latest News
- 2008-03-22 Nightly Build of Emgu.CV-1.2.2.0 is available, changes in this version includes
AsBitmap()
function added as a high performance alternative toToBitmap()
function- Note:
AsBitmap()
differs fromToBitmap()
such that when dealing with Image<Gray, Byte> and Image<Bgr, Byte>, the image data is shared with Bitmap. Take extra caution not to use the Bitmap after the Image object is disposed
- Note:
ToBitmap()
is much faster when converting Grayscale to Bitmap. Format8bppIndexed with a custome Color Palette is used instead of Format24bppRgb . In terms of memcopy it only copy one third of data as compares with the old version. Thanks for the tips from Sebastian Kraemer.- Better performance on the Width and Height properties.
- Example of using Emgu CV in WCF to implement web service. (Both Server and Client covered).
- Example of Hugh Line and circle detection
- More structure wrapped:
- In Emgu.CV namespace: MCvHuMoments
- More functions has been covered:
- In CvInvoke class: cvSobel, cvLaplace, cvCmpS, cvGetSpatialMoment, cvGetCentralMoment, cvGetHuMoments, cvFindFundamentalMat, cvComputeCorrespondEpilines, cvConvertPointsHomogenius, cvMeanShift, cvCamShift, cvTrace, cvDet
- In Array class: _SetIdentity, Trace
- In Matrix class: Det
- In Image class: Sobel, Laplace, Cmp function that accepts scalar, MatchTemplate
- In Moment class: GetSpatialMoment, GetCentralMoment, CvHuMoment
- Fix a bug in Circle that prevent it from being XML serialized