123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- #if !UNITY_WSA_10_0
- using OpenCVForUnity.CoreModule;
- using OpenCVForUnity.UtilsModule;
- using System;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- namespace OpenCVForUnity.TextModule
- {
- // C++: class OCRHMMDecoder
- /**
- * OCRHMMDecoder class provides an interface for OCR using Hidden Markov Models.
- *
- * <b>Note:</b>
- * <ul>
- * <li>
- * (C++) An example on using OCRHMMDecoder recognition combined with scene text detection can
- * be found at the webcam_demo sample:
- * <https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/webcam_demo.cpp>
- * </li>
- * </ul>
- */
- public class OCRHMMDecoder : BaseOCR
- {
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- }
- if (IsEnabledDispose)
- {
- if (nativeObj != IntPtr.Zero)
- text_OCRHMMDecoder_delete(nativeObj);
- nativeObj = IntPtr.Zero;
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
- protected internal OCRHMMDecoder(IntPtr addr) : base(addr) { }
- // internal usage only
- public static new OCRHMMDecoder __fromPtr__(IntPtr addr) { return new OCRHMMDecoder(addr); }
- //
- // C++: String cv::text::OCRHMMDecoder::run(Mat image, int min_confidence, int component_level = 0)
- //
- /**
- * Recognize text using HMM.
- *
- * Takes an image and a mask (where each connected component corresponds to a segmented character)
- * on input and returns recognized text in the output_text parameter. Optionally
- * provides also the Rects for individual text elements found (e.g. words), and the list of those
- * text elements with their confidence values.
- *
- * param image Input image CV_8UC1 or CV_8UC3 with a single text line (or word).
- *
- *
- * text elements found (e.g. words).
- *
- * recognition of individual text elements found (e.g. words).
- *
- * for the recognition of individual text elements found (e.g. words).
- *
- * param component_level Only OCR_LEVEL_WORD is supported.
- * param min_confidence automatically generated
- * return automatically generated
- */
- public string run(Mat image, int min_confidence, int component_level)
- {
- ThrowIfDisposed();
- if (image != null) image.ThrowIfDisposed();
- string retVal = Marshal.PtrToStringAnsi(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_run_10(nativeObj, image.nativeObj, min_confidence, component_level)));
- return retVal;
- }
- /**
- * Recognize text using HMM.
- *
- * Takes an image and a mask (where each connected component corresponds to a segmented character)
- * on input and returns recognized text in the output_text parameter. Optionally
- * provides also the Rects for individual text elements found (e.g. words), and the list of those
- * text elements with their confidence values.
- *
- * param image Input image CV_8UC1 or CV_8UC3 with a single text line (or word).
- *
- *
- * text elements found (e.g. words).
- *
- * recognition of individual text elements found (e.g. words).
- *
- * for the recognition of individual text elements found (e.g. words).
- *
- * param min_confidence automatically generated
- * return automatically generated
- */
- public string run(Mat image, int min_confidence)
- {
- ThrowIfDisposed();
- if (image != null) image.ThrowIfDisposed();
- string retVal = Marshal.PtrToStringAnsi(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_run_11(nativeObj, image.nativeObj, min_confidence)));
- return retVal;
- }
- //
- // C++: String cv::text::OCRHMMDecoder::run(Mat image, Mat mask, int min_confidence, int component_level = 0)
- //
- public string run(Mat image, Mat mask, int min_confidence, int component_level)
- {
- ThrowIfDisposed();
- if (image != null) image.ThrowIfDisposed();
- if (mask != null) mask.ThrowIfDisposed();
- string retVal = Marshal.PtrToStringAnsi(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_run_12(nativeObj, image.nativeObj, mask.nativeObj, min_confidence, component_level)));
- return retVal;
- }
- public string run(Mat image, Mat mask, int min_confidence)
- {
- ThrowIfDisposed();
- if (image != null) image.ThrowIfDisposed();
- if (mask != null) mask.ThrowIfDisposed();
- string retVal = Marshal.PtrToStringAnsi(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_run_13(nativeObj, image.nativeObj, mask.nativeObj, min_confidence)));
- return retVal;
- }
- //
- // C++: static Ptr_OCRHMMDecoder cv::text::OCRHMMDecoder::create(Ptr_OCRHMMDecoder_ClassifierCallback classifier, String vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode = OCR_DECODER_VITERBI)
- //
- /**
- * Creates an instance of the OCRHMMDecoder class. Initializes HMMDecoder.
- *
- * param classifier The character classifier with built in feature extractor.
- *
- * param vocabulary The language vocabulary (chars when ascii english text). vocabulary.size()
- * must be equal to the number of classes of the classifier.
- *
- * param transition_probabilities_table Table with transition probabilities between character
- * pairs. cols == rows == vocabulary.size().
- *
- * param emission_probabilities_table Table with observation emission probabilities. cols ==
- * rows == vocabulary.size().
- *
- * param mode HMM Decoding algorithm. Only OCR_DECODER_VITERBI is available for the moment
- * (<http://en.wikipedia.org/wiki/Viterbi_algorithm>).
- * return automatically generated
- */
- public static OCRHMMDecoder create(OCRHMMDecoder_ClassifierCallback classifier, string vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode)
- {
- if (classifier != null) classifier.ThrowIfDisposed();
- if (transition_probabilities_table != null) transition_probabilities_table.ThrowIfDisposed();
- if (emission_probabilities_table != null) emission_probabilities_table.ThrowIfDisposed();
- return OCRHMMDecoder.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_create_10(classifier.getNativeObjAddr(), vocabulary, transition_probabilities_table.nativeObj, emission_probabilities_table.nativeObj, mode)));
- }
- /**
- * Creates an instance of the OCRHMMDecoder class. Initializes HMMDecoder.
- *
- * param classifier The character classifier with built in feature extractor.
- *
- * param vocabulary The language vocabulary (chars when ascii english text). vocabulary.size()
- * must be equal to the number of classes of the classifier.
- *
- * param transition_probabilities_table Table with transition probabilities between character
- * pairs. cols == rows == vocabulary.size().
- *
- * param emission_probabilities_table Table with observation emission probabilities. cols ==
- * rows == vocabulary.size().
- *
- * (<http://en.wikipedia.org/wiki/Viterbi_algorithm>).
- * return automatically generated
- */
- public static OCRHMMDecoder create(OCRHMMDecoder_ClassifierCallback classifier, string vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table)
- {
- if (classifier != null) classifier.ThrowIfDisposed();
- if (transition_probabilities_table != null) transition_probabilities_table.ThrowIfDisposed();
- if (emission_probabilities_table != null) emission_probabilities_table.ThrowIfDisposed();
- return OCRHMMDecoder.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_create_11(classifier.getNativeObjAddr(), vocabulary, transition_probabilities_table.nativeObj, emission_probabilities_table.nativeObj)));
- }
- //
- // C++: static Ptr_OCRHMMDecoder cv::text::OCRHMMDecoder::create(String filename, String vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode = OCR_DECODER_VITERBI, int classifier = OCR_KNN_CLASSIFIER)
- //
- /**
- * Creates an instance of the OCRHMMDecoder class. Loads and initializes HMMDecoder from the specified path
- *
- *
- * param filename automatically generated
- * param vocabulary automatically generated
- * param transition_probabilities_table automatically generated
- * param emission_probabilities_table automatically generated
- * param mode automatically generated
- * param classifier automatically generated
- * return automatically generated
- */
- public static OCRHMMDecoder create(string filename, string vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode, int classifier)
- {
- if (transition_probabilities_table != null) transition_probabilities_table.ThrowIfDisposed();
- if (emission_probabilities_table != null) emission_probabilities_table.ThrowIfDisposed();
- return OCRHMMDecoder.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_create_12(filename, vocabulary, transition_probabilities_table.nativeObj, emission_probabilities_table.nativeObj, mode, classifier)));
- }
- /**
- * Creates an instance of the OCRHMMDecoder class. Loads and initializes HMMDecoder from the specified path
- *
- *
- * param filename automatically generated
- * param vocabulary automatically generated
- * param transition_probabilities_table automatically generated
- * param emission_probabilities_table automatically generated
- * param mode automatically generated
- * return automatically generated
- */
- public static OCRHMMDecoder create(string filename, string vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode)
- {
- if (transition_probabilities_table != null) transition_probabilities_table.ThrowIfDisposed();
- if (emission_probabilities_table != null) emission_probabilities_table.ThrowIfDisposed();
- return OCRHMMDecoder.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_create_13(filename, vocabulary, transition_probabilities_table.nativeObj, emission_probabilities_table.nativeObj, mode)));
- }
- /**
- * Creates an instance of the OCRHMMDecoder class. Loads and initializes HMMDecoder from the specified path
- *
- *
- * param filename automatically generated
- * param vocabulary automatically generated
- * param transition_probabilities_table automatically generated
- * param emission_probabilities_table automatically generated
- * return automatically generated
- */
- public static OCRHMMDecoder create(string filename, string vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table)
- {
- if (transition_probabilities_table != null) transition_probabilities_table.ThrowIfDisposed();
- if (emission_probabilities_table != null) emission_probabilities_table.ThrowIfDisposed();
- return OCRHMMDecoder.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(text_OCRHMMDecoder_create_14(filename, vocabulary, transition_probabilities_table.nativeObj, emission_probabilities_table.nativeObj)));
- }
- #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
- const string LIBNAME = "__Internal";
- #else
- const string LIBNAME = "opencvforunity";
- #endif
- // C++: String cv::text::OCRHMMDecoder::run(Mat image, int min_confidence, int component_level = 0)
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_run_10(IntPtr nativeObj, IntPtr image_nativeObj, int min_confidence, int component_level);
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_run_11(IntPtr nativeObj, IntPtr image_nativeObj, int min_confidence);
- // C++: String cv::text::OCRHMMDecoder::run(Mat image, Mat mask, int min_confidence, int component_level = 0)
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_run_12(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr mask_nativeObj, int min_confidence, int component_level);
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_run_13(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr mask_nativeObj, int min_confidence);
- // C++: static Ptr_OCRHMMDecoder cv::text::OCRHMMDecoder::create(Ptr_OCRHMMDecoder_ClassifierCallback classifier, String vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode = OCR_DECODER_VITERBI)
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_create_10(IntPtr classifier_nativeObj, string vocabulary, IntPtr transition_probabilities_table_nativeObj, IntPtr emission_probabilities_table_nativeObj, int mode);
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_create_11(IntPtr classifier_nativeObj, string vocabulary, IntPtr transition_probabilities_table_nativeObj, IntPtr emission_probabilities_table_nativeObj);
- // C++: static Ptr_OCRHMMDecoder cv::text::OCRHMMDecoder::create(String filename, String vocabulary, Mat transition_probabilities_table, Mat emission_probabilities_table, int mode = OCR_DECODER_VITERBI, int classifier = OCR_KNN_CLASSIFIER)
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_create_12(string filename, string vocabulary, IntPtr transition_probabilities_table_nativeObj, IntPtr emission_probabilities_table_nativeObj, int mode, int classifier);
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_create_13(string filename, string vocabulary, IntPtr transition_probabilities_table_nativeObj, IntPtr emission_probabilities_table_nativeObj, int mode);
- [DllImport(LIBNAME)]
- private static extern IntPtr text_OCRHMMDecoder_create_14(string filename, string vocabulary, IntPtr transition_probabilities_table_nativeObj, IntPtr emission_probabilities_table_nativeObj);
- // native support for java finalize()
- [DllImport(LIBNAME)]
- private static extern void text_OCRHMMDecoder_delete(IntPtr nativeObj);
- }
- }
- #endif
|