Show more
Read more
View product
View report
Drag


Carmen® FreeFlow es un motor avanzado de reconocimiento de matrículas y un kit de desarrollo de software (SDK). Permite a los desarrolladores integrar capacidades de reconocimiento automático de matrículas (ANPR) y de marca, modelo, color y categoría del vehículo (MMR) en sus aplicaciones. El motor Carmen®, líder en la industria, ofrece una precisión inigualable, con más del 95 % de reconocimiento incluso en imágenes de baja calidad.
Esta solución versátil reconoce matrículas de más de 160 países, lo que la hace ideal para aplicaciones a nivel mundial.

Carmen® FreeFlow es la opción de confianza para proyectos que exigen una precisión inigualable. Con una tasa de precisión real del 95% al 99% para varios tipos de matrículas, Carmen® FreeFlow garantiza un reconocimiento fiable incluso en condiciones difíciles.
Con soporte para más de 60,000 tipos de matrículas de más de 160 países y alfabetos diversos - incluyendo latino, árabe, cirílico, tailandés y más - Carmen® FreeFlow ofrece un alcance global sin igual. Es la opción líder para ANPR de alta calidad, en regiones que van desde Brasil hasta Japón, América del Norte hasta Europa, y Oriente Medio hasta Asia-Pacífico. Intégralo una vez y aprovecha el poder del ANPR de alto rendimiento en cualquier parte del mundo.

Carmen® FreeFlow no es una solución genérica; es un motor ANPR versátil diseñado para adaptarse a tus necesidades específicas. Permite la integración fluida del reconocimiento de matrículas de alta precisión, así como el reconocimiento opcional de marca y modelo (MMR), mercancías peligrosas (HazMat) y códigos IMO. Esta flexibilidad lo hace apto para una amplia gama de aplicaciones, como la monitorización del tráfico, sistemas de seguridad, peajes en autopistas y control de acceso.
Diseñado para ser escalable, Carmen® FreeFlow ofrece opciones de licencia flexibles que se adaptan al tamaño y necesidades de procesamiento de tu proyecto. Su precisión excepcional, incluso con imágenes de baja calidad, da como resultado tasas muy bajas de falsos positivos, lo que lo hace ideal para sistemas de peaje y control de velocidad. El motor funciona sin problemas en plataformas Windows y Linux.

Utilizado en más de 100,000 sistemas en todo el mundo.

Reconocimiento mundial de matrículas, marca, modelo y color de vehículos con una sola integración

Se lanzan cuatro actualizaciones por año

Desde sistemas pequeños y medianos hasta grandes y complejos.

El SDK admite ambos tipos de entrada de datos.

Funciona en Windows y Linux.
Carmen® FreeFlow admite el reconocimiento de matrículas de más de 160 países, cubriendo más de 38,000 tipos de placas. Por favor, contacte con nuestro equipo para soporte específico por país.
Sí, Carmen® FreeFlow puede procesar tanto imágenes fijas como transmisiones de video.
Sí, puede probar nuestro software utilizando nuestro modelo de licencia basado en suscripción de forma gratuita.
Nuestro SDK está disponible como licencia de por vida o como licencia basada en suscripción.
Sí, nuestro SDK puede usarse con un modelo de licencia por suscripción, disponible sin llave de hardware.
Publicamos actualizaciones del motor cuatro veces al año.
Sí, nuestro Carmen® SDK es compatible con las arquitecturas x86-64, ARM32 y ARM64.
La versatilidad de Carmen FreeFlow lo hace ideal para una amplia gama de aplicaciones de monitoreo de tráfico. Aquí hay solo algunos de los usos más comunes:
#include "gxsdldr.c" #include "cmanpr.h" // If an error occurred it displays the error and terminates the program void term_if_err(int st) { int err_code; wchar_t err_str[256]; if(st) return; // No error occurred // Displays error code and description err_str[(sizeof(err_str)/sizeof(wchar_t))-1] = 0; gx_geterror(&err_code, err_str, (sizeof(err_str)/sizeof(wchar_t))-1); fprintf(stderr, "GX error (%x) occurred: %ls\n", err_code, err_str); // Terminates the program exit(1); } int main(void) { struct gxHANDLE anprhandle, imagehandle; struct gxIMAGE *image; struct cmNP *anprresult; int st; // Opens the ANPR module with EUR region st = gx_openmodule(&anprhandle, L"cmanpr", L"eur"); term_if_err(st); // Opens the image module, allocates the image structure and load the image st = gx_openmodule(&imagehandle, L"gximage", L"default"); term_if_err(st); st = gx_allocimage(imagehandle, &image); term_if_err(st); st = gx_loadimage(imagehandle, image, L"image.jpg", GX_UNDEF); term_if_err(st); // Finds the first license plate anprresult = 0; st = cm_findfirst(anprhandle, image, &anprresult); term_if_err(st); if(anprresult) { char countryCode[256]=""; // Get short country code st = cm_getcountrycode(anprhandle,anprresult->type,(int)CCT_COUNTRY_SHORT,countryCode,sizeof(countryCode)); term_if_err(st); // Displays the result, country code and type printf("Plate text: %s\n", anprresult->text); printf("Country code: %s\n", countryCode[0] ? countryCode : "No plate type"); printf("Type: %i\n", anprresult->type); // Frees up the result st = gx_globalfree(anprresult); term_if_err(st); } else { printf("No license plate found\n"); } // Frees up the resources st = gx_unrefimage(imagehandle, image); term_if_err(st); st = gx_unrefhandle(&imagehandle); term_if_err(st); st = gx_unrefhandle(&anprhandle); term_if_err(st); return 0; }
#include "gxsdldr.cpp" #include "cmanpr.h" int main() { try { // Creates the ANPR object with EUR region cm::cmAnpr anpr("eur"); // Creates the image object and load the image gxImage image; image.Load("image.jpg"); // Finds the first license plate if(anpr.FindFirst(image)) { // Get short country code gxOutStr countryCode = anpr.GetCountryCode(anpr.GetType(),(int)cm::CCT_COUNTRY_SHORT); std::wstring wCountryCode = countryCode.empty() ? L"No plate type" : countryCode; // Displays the result, country code and type std::wcout << L"Plate text: " << anpr.GetText() << std::endl; std::wcout << L"Country code: " << wCountryCode << std::endl; std::wcout << L"Type: " << anpr.GetType() << std::endl; } else { std::wcout << L"No license plate found" << std::endl; } } catch(gxError &e) { std::wcerr << L"GX error (" << e.GetErrorCode() << ") occurred: " << e.GetErrorString() << std::endl; return 1; } return 0; }
using System; using gx; using cm; namespace carmen { class MainClass { public static void Main(string[] args) { try { // Creates the ANPR object with EUR region cmAnpr anpr = new cmAnpr("eur"); // Creates the image object and load the image gxImage image = new gxImage(); image.Load("image.jpg"); // Finds the first license plate if (anpr.FindFirst(image)) { // Get short country code String countryCode = anpr.GetCountryCode(anpr.GetType(), (int)CC_TYPE.CCT_COUNTRY_SHORT); countryCode = countryCode.Length > 0 ? countryCode : "No plate type"; //Displays the result, country code and type Console.WriteLine("Plate text: {0}", anpr.GetText()); Console.WriteLine("Country code: {0}", countryCode); Console.WriteLine("Type: {0}", anpr.GetType()); } else { Console.WriteLine("No license plate found"); } } catch(gxException) { Console.Error.WriteLine("GX error (" + gxSystem.GetErrorCode() + ") occured: " + gxSystem.GetErrorString()); Environment.Exit(1); } } } }
import com.adaptiverecognition.gx.*; import com.adaptiverecognition.cm.*; public class cmanpr { static { try { System.loadLibrary("jgx"); System.loadLibrary("jcmanpr"); } catch(UnsatisfiedLinkError e) { System.err.println("Native code library failed to load." + e); System.exit(1); } } public static void main(String argv[]) { try { // Creates the ANPR object with EUR region cmAnpr anpr = new cmAnpr("eur"); // Creates the image object and load the image gxImage image = new gxImage(); image.Load("image.jpg"); // Finds the first license plate if(anpr.FindFirst(image)) { // Get short country code String countryCode = anpr.GetCountryCode(anpr.GetType(),jcmanprConstants.CCT_COUNTRY_SHORT); countryCode = countryCode.length()>0 ? countryCode : "No plate type"; // Displays the result, country code and type System.out.println("Plate text: " + anpr.GetText()); System.out.println("Country code: " + countryCode); System.out.println("Type: " + anpr.GetType()); } else { System.out.println("No license plate found"); } // Frees up resources anpr.delete(); image.delete(); } catch(RuntimeException e) { System.err.println("GX error (" + String.format("0x%08x",gxSystem.GetErrorCode()) + ") occured: " + gxSystem.GetErrorString()); System.exit(1); } } }
Imports System Imports gx Imports cm Module Main Sub Main() Try ' Creates the ANPR object with EUR region Dim anpr As cmAnpr = New cmAnpr("eur") ' Creates the image object and load the image Dim image As gxImage = New gxImage("default") image.Load("image.jpg") ' Finds the first license plate If anpr.FindFirst(image) Then ' Get short country code Dim countryCode As String countryCode = anpr.GetCountryCode(anpr.GetType(), CC_TYPE.CCT_COUNTRY_SHORT) If countryCode.Length = 0 Then countryCode = "No plate type" ' Displays the result, country code and type Console.WriteLine("Plate text: {0}", anpr.GetText()) Console.WriteLine("Country code: {0}", countryCode) Console.WriteLine("Type: {0}", anpr.GetType()) Else Console.WriteLine("No license plate found") End If Catch ex As gxException Console.Error.WriteLine("GX error (" + gxSystem.GetErrorCode().ToString() + ") occured: " + gxSystem.GetErrorString()) Environment.Exit(1) End Try End Sub End Module
Se recomienda este tipo de licencia para proyectos de control de acceso con menos de 300 plazas de aparcamiento.
Con esta opción, se puede adaptar la licencia a la capacidad de procesamiento del hardware (ver tabla abajo).
Diseñada para proyectos de reconocimiento basados en video escalables, esta licencia es ideal para aplicaciones que requieren licencias por flujo para el procesamiento de video.
1 - 5
2 - 10
4 - 20
3 - 7
6 - 14
12 - 28
5 - 10
10 - 20
20 - 40
11,520
ilimitado (pero puede depender de la velocidad de CPU, configuración y tipo de motor)
4 hilos paralelos
1 / 2 / 4 hilos paralelos
300
ilimitado
30
-
Nuestros expertos en ventas y productos están aquí para ayudar. Contáctenos o encuentre un afiliado cerca de su ubicación.
Para quienes buscan avances innovadores.
Explora productos que superan los límites de lo que puedes lograr.
Every industry faces unique obstacles. Discover how Adaptive Recognition can be your partner in tackling them head-on and emerging stronger.
Vaya más allá de las afirmaciones, vea las pruebas. Explore nuestros proyectos de referencia y casos prácticos para obtener evidencia tangible de cómo el Reconocimiento Adaptativo ofrece resultados excepcionales.