Browse Source

line_descriptor updates.

EMGUCV_3_1
Canming Huang 10 years ago
parent
commit
aa95a949f4
  1. 1
      Emgu.CV.Contrib/Emgu.CV.Contrib.projitems
  2. 79
      Emgu.CV.Contrib/LineDescriptor/MKeyLine.cs
  3. 4
      Emgu.CV.Extern/CMakeLists.txt
  4. 4
      Emgu.CV.Extern/line_descriptor/line_descriptor_c.cpp
  5. 1
      Emgu.CV.Extern/line_descriptor/line_descriptor_c.h

1
Emgu.CV.Contrib/Emgu.CV.Contrib.projitems

@ -20,5 +20,6 @@
<Compile Include="$(MSBuildThisFileDirectory)Plot\*.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Plot\*.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Aruco\*.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Aruco\*.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Fuzzy\*.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Fuzzy\*.cs" />
<Compile Include="$(MSBuildThisFileDirectory)LineDescriptor\*.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>

79
Emgu.CV.Contrib/LineDescriptor/MKeyLine.cs

@ -0,0 +1,79 @@
//----------------------------------------------------------------------------
// Copyright (C) 2004-2016 by EMGU Corporation. All rights reserved.
//----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using Emgu.CV.Structure;
using Emgu.CV.Text;
using Emgu.CV.Util;
using Emgu.Util;
using System.Diagnostics;
using System.Drawing;
namespace Emgu.CV.LineDescriptor
{
public struct MKeyLine
{
/// <summary>
/// Orientation of the line
/// </summary>
public float Angle;
/// <summary>
/// Object ID, that can be used to cluster keylines by the line they represent
/// </summary>
public int ClassId;
/// <summary>
/// Octave (pyramid layer), from which the keyline has been extracted
/// </summary>
public int Octave;
/// <summary>
/// Coordinates of the middlepoint
/// </summary>
public PointF Pt;
/// <summary>
/// The response, by which the strongest keylines have been selected.
/// It's represented by the ratio between line's length and maximum between
/// image's width and height
/// </summary>
public float Response;
/// <summary>
/// Minimum area containing line
/// </summary>
public float Size;
/// <summary>
/// Lines's extremes in original image
/// </summary>
public float StartPointX;
public float StartPointY;
public float EndPointX;
public float EndPointY;
/// <summary>
/// Line's extremes in image it was extracted from
/// </summary>
public float SPointInOctaveX;
public float SPointInOctaveY;
public float EPointInOctaveX;
public float EPointInOctaveY;
/// <summary>
/// The length of line
/// </summary>
public float LineLength;
/// <summary>
/// Number of pixels covered by the line
/// </summary>
public int NumOfPixels;
}
}

4
Emgu.CV.Extern/CMakeLists.txt

@ -71,6 +71,10 @@ IF(HAVE_opencv_text)
CREATE_VECTOR_CS("ERStat" "cv::text::ERStat" "MCvERStat" "struct" ${CMAKE_CURRENT_SOURCE_DIR}/../Emgu.CV.Contrib/Text Emgu.CV.Text "#include \"opencv2/text/erfilter.hpp\"") CREATE_VECTOR_CS("ERStat" "cv::text::ERStat" "MCvERStat" "struct" ${CMAKE_CURRENT_SOURCE_DIR}/../Emgu.CV.Contrib/Text Emgu.CV.Text "#include \"opencv2/text/erfilter.hpp\"")
ENDIF() ENDIF()
IF(HAVE_opencv_line_descriptor)
CREATE_VECTOR_CS("KeyLine" "cv::line_descriptor::KeyLine" "MKeyLine" "struct" ${CMAKE_CURRENT_SOURCE_DIR}/../Emgu.CV.Contrib/LineDescriptor Emgu.CV.LineDescriptor "#include \"opencv2/line_descriptor.hpp\"")
ENDIF()
IF(HAVE_opencv_highgui) IF(HAVE_opencv_highgui)
CREATE_VECTOR_CS("ColorPoint" "ColorPoint" "ColorPoint" "struct" ${CMAKE_CURRENT_SOURCE_DIR}/../Emgu.CV/Util Emgu.CV.Util "#include \"highgui_c_extra.h\"") CREATE_VECTOR_CS("ColorPoint" "ColorPoint" "ColorPoint" "struct" ${CMAKE_CURRENT_SOURCE_DIR}/../Emgu.CV/Util Emgu.CV.Util "#include \"highgui_c_extra.h\"")
ENDIF() ENDIF()

4
Emgu.CV.Extern/line_descriptor/line_descriptor_c.cpp

@ -12,6 +12,10 @@ cv::line_descriptor::BinaryDescriptor* cveLineDescriptorBinaryDescriptorCreate()
ptr.addref(); ptr.addref();
return ptr.get(); return ptr.get();
} }
void cveBinaryDescriptorDetect(cv::line_descriptor::BinaryDescriptor* descriptor, cv::Mat* image, std::vector<cv::line_descriptor::KeyLine>* keypoints, cv::Mat* mask)
{
descriptor->detect(*image, *keypoints, mask ? *mask : cv::Mat());
}
void cveLineDescriptorBinaryDescriptoyRelease(cv::line_descriptor::BinaryDescriptor** descriptor) void cveLineDescriptorBinaryDescriptoyRelease(cv::line_descriptor::BinaryDescriptor** descriptor)
{ {
delete * descriptor; delete * descriptor;

1
Emgu.CV.Extern/line_descriptor/line_descriptor_c.h

@ -12,5 +12,6 @@
#include "opencv2/line_descriptor.hpp" #include "opencv2/line_descriptor.hpp"
CVAPI(cv::line_descriptor::BinaryDescriptor*) cveLineDescriptorBinaryDescriptorCreate(); CVAPI(cv::line_descriptor::BinaryDescriptor*) cveLineDescriptorBinaryDescriptorCreate();
CVAPI(void) cveBinaryDescriptorDetect(cv::line_descriptor::BinaryDescriptor* descriptor, cv::Mat* image, std::vector<cv::line_descriptor::KeyLine>* keypoints, cv::Mat* mask);
CVAPI(void) cveLineDescriptorBinaryDescriptoyRelease(cv::line_descriptor::BinaryDescriptor** descriptor); CVAPI(void) cveLineDescriptorBinaryDescriptoyRelease(cv::line_descriptor::BinaryDescriptor** descriptor);
#endif #endif
Loading…
Cancel
Save