Browse Source

Added CvInvoke.Imwritemulti, CvInvoke.HaveImageReader & CvInvoke.HaveImageWriter

pull/461/head
Canming Huang 4 years ago
parent
commit
2d299066c5
  1. 16
      Emgu.CV.Extern/imgcodecs/imgcodecs_c_extra.cpp
  2. 6
      Emgu.CV.Extern/imgcodecs/imgcodecs_c_extra.h
  3. 37
      Emgu.CV/PInvoke/CvInvokeImgcodecs.cs

16
Emgu.CV.Extern/imgcodecs/imgcodecs_c_extra.cpp

@ -6,11 +6,25 @@
#include "imgcodecs_c_extra.h"
bool cveImwrite(cv::String* filename, cv::_InputArray* img, const std::vector<int>* params)
bool cveHaveImageReader(cv::String* filename)
{
return cv::haveImageReader(*filename);
}
bool cveHaveImageWriter(cv::String* filename)
{
return cv::haveImageWriter(*filename);
}
bool cveImwrite(cv::String* filename, cv::_InputArray* img, std::vector<int>* params)
{
return cv::imwrite(*filename, *img, params ? *params : std::vector<int>());
}
bool cveImwritemulti(cv::String* filename, cv::_InputArray* img, std::vector<int>* params)
{
return cv::imwritemulti(*filename, *img, params ? *params : std::vector<int>());
}
void cveImread(cv::String* fileName, int flags, cv::Mat* result)
{
cv::Mat m = cv::imread(*fileName, flags);

6
Emgu.CV.Extern/imgcodecs/imgcodecs_c_extra.h

@ -11,7 +11,11 @@
#include "opencv2/core/core_c.h"
#include "opencv2/imgcodecs/imgcodecs.hpp"
CVAPI(bool) cveImwrite(cv::String* filename, cv::_InputArray* img, const std::vector<int>* params);
CVAPI(bool) cveHaveImageReader(cv::String* filename);
CVAPI(bool) cveHaveImageWriter(cv::String* filename);
CVAPI(bool) cveImwrite(cv::String* filename, cv::_InputArray* img, std::vector<int>* params);
CVAPI(bool) cveImwritemulti(cv::String* filename, cv::_InputArray* img, std::vector<int>* params);
CVAPI(void) cveImread(cv::String* fileName, int flags, cv::Mat* result);
CVAPI(bool) cveImreadmulti(const cv::String* filename, std::vector<cv::Mat>* mats, int flags);

37
Emgu.CV/PInvoke/CvInvokeImgcodecs.cs

@ -40,6 +40,43 @@ namespace Emgu.CV
CvEnum.ImreadModes loadType,
IntPtr result);
public static bool HaveImageReader(String fileName)
{
using (CvString csFileName = new CvString(fileName))
return cveHaveImageReader(csFileName);
}
[DllImport(ExternLibrary, CallingConvention = CvInvoke.CvCallingConvention)]
[return: MarshalAs(CvInvoke.BoolMarshalType)]
internal static extern bool cveHaveImageReader(IntPtr filename);
public static bool HaveImageWriter(String fileName)
{
using (CvString csFileName = new CvString(fileName))
return cveHaveImageWriter(csFileName);
}
[DllImport(ExternLibrary, CallingConvention = CvInvoke.CvCallingConvention)]
[return: MarshalAs(CvInvoke.BoolMarshalType)]
internal static extern bool cveHaveImageWriter(IntPtr filename);
public static bool Imwritemulti(String filename, IInputArrayOfArrays images, params KeyValuePair<CvEnum.ImwriteFlags, int>[] parameters)
{
using (CvString strFilename = new CvString(filename))
using (Util.VectorOfInt vec = new Util.VectorOfInt())
using (InputArray iaImages = images.GetInputArray())
{
PushParameters(vec, parameters);
return cveImwritemulti(strFilename, iaImages, vec);
}
}
[DllImport(ExternLibrary, CallingConvention = CvInvoke.CvCallingConvention)]
[return: MarshalAs(CvInvoke.BoolMarshalType)]
internal static extern bool cveImwritemulti(IntPtr filename, IntPtr mats, IntPtr flags);
/// <summary>
/// The function imreadmulti loads a multi-page image from the specified file into a vector of Mat objects.
/// </summary>

Loading…
Cancel
Save