Removed C# binding

This commit is contained in:
Matthew Hill
2016-10-21 20:39:01 -04:00
parent af47a389cf
commit c98a3cfe38
36 changed files with 0 additions and 3172 deletions

View File

@@ -1,68 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openalpr-net", "openalpr-net\openalpr-net.vcxproj", "{4044340C-C435-4A1F-8F12-0806C38AE3B6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "openalprnet-cli", "openalprnet-cli\openalprnet-cli.csproj", "{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "openalprnet-windemo", "openalprnet-windemo\openalprnet-windemo.csproj", "{C7863A14-55D2-4389-9072-04AA6E30AAD1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|Win32.ActiveCfg = Debug|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|Win32.Build.0 = Debug|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|x64.ActiveCfg = Debug|x64
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|x64.Build.0 = Debug|x64
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Debug|x86.ActiveCfg = Debug|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|Mixed Platforms.Build.0 = Release|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|Win32.ActiveCfg = Release|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|Win32.Build.0 = Release|Win32
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|x64.ActiveCfg = Release|x64
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|x64.Build.0 = Release|x64
{4044340C-C435-4A1F-8F12-0806C38AE3B6}.Release|x86.ActiveCfg = Release|Win32
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|Mixed Platforms.Build.0 = Debug|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|Win32.ActiveCfg = Debug|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|x64.ActiveCfg = Debug|x64
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|x64.Build.0 = Debug|x64
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|x86.ActiveCfg = Debug|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Debug|x86.Build.0 = Debug|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|Mixed Platforms.ActiveCfg = Release|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|Mixed Platforms.Build.0 = Release|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|Win32.ActiveCfg = Release|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|x64.ActiveCfg = Release|x64
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|x64.Build.0 = Release|x64
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|x86.ActiveCfg = Release|x86
{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}.Release|x86.Build.0 = Release|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|Mixed Platforms.Build.0 = Debug|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|Win32.ActiveCfg = Debug|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|x64.ActiveCfg = Debug|x64
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|x64.Build.0 = Debug|x64
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|x86.ActiveCfg = Debug|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Debug|x86.Build.0 = Debug|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|Mixed Platforms.ActiveCfg = Release|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|Mixed Platforms.Build.0 = Release|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|Win32.ActiveCfg = Release|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|x64.ActiveCfg = Release|x64
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|x64.Build.0 = Release|x64
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|x86.ActiveCfg = Release|x86
{C7863A14-55D2-4389-9072-04AA6E30AAD1}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -1,40 +0,0 @@
#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly:AssemblyTitleAttribute("openalprnet")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("")];
[assembly:AssemblyProductAttribute("openalprnet")];
[assembly:AssemblyCopyrightAttribute("Copyright (c) 2015")];
[assembly:AssemblyTrademarkAttribute("")];
[assembly:AssemblyCultureAttribute("")];
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the value or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersionAttribute("2.1.0")]
[assembly: AssemblyFileVersionAttribute("2.1.0")]
[assembly: AssemblyInformationalVersionAttribute("2.1.0")]
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];

View File

@@ -1,5 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// openalpr-net.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -1,7 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,41 +0,0 @@
#include "stdafx.h"
#include "bitmapmat-net.h"
using namespace openalprnet;
BitmapMat::BitmapMat(array<Byte>^ byteArray)
{
m_bitmap = new cv::Mat();
std::vector<char> buffer = AlprHelper::ToVector(byteArray);
cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR, this->m_bitmap);
}
BitmapMat::BitmapMat(Bitmap^ bitmap)
{
m_bitmap = new cv::Mat();
MemoryStream^ ms = gcnew MemoryStream();
bitmap->Save(ms, ImageFormat::Png);
std::vector<char> buffer = AlprHelper::ToVector(ms->ToArray());
cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR, this->m_bitmap);
delete ms;
}
BitmapMat::BitmapMat(MemoryStream^ memoryStream)
{
m_bitmap = new cv::Mat();
std::vector<char> buffer = AlprHelper::ToVector(memoryStream->ToArray());
cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR, this->m_bitmap);
}
BitmapMat::BitmapMat(String^ filename)
{
m_bitmap = new cv::Mat();
array<Byte>^ byteArray = File::ReadAllBytes(filename);
std::vector<char> buffer = AlprHelper::ToVector(byteArray);
cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR, this->m_bitmap);
delete byteArray;
}

View File

@@ -1,51 +0,0 @@
#pragma once
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "helper-net.h"
using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
using namespace System::IO;
namespace openalprnet {
private ref class BitmapMat : IDisposable
{
private:
cv::Mat* m_bitmap;
bool m_disposed;
public:
BitmapMat(array<Byte>^ byteArray);
BitmapMat(Bitmap^ bitmap);
BitmapMat(MemoryStream^ memoryStream);
BitmapMat(String^ filename);
~BitmapMat()
{
if (this->m_disposed)
{
return;
}
this->!BitmapMat();
this->m_disposed = true;
}
!BitmapMat()
{
m_bitmap->release();
delete m_bitmap;
}
property cv::Mat Value {
cv::Mat get()
{
return *m_bitmap;
}
}
};
}

View File

@@ -1,655 +0,0 @@
#pragma once
#include "config.h" // alpr
#include "types-net.h"
#include "helper-net.h"
using namespace System;
using namespace openalprnet::types;
namespace openalprnet
{
public ref class AlprConfigNet sealed
{
internal:
AlprConfigNet(Config* config) : m_config(config)
{
}
public:
property bool IsLoaded {
bool get()
{
return this->m_config->loaded;
}
}
property AlprDetectorTypeNet Detector {
AlprDetectorTypeNet get() {
return static_cast<AlprDetectorTypeNet>(this->m_config->detector);
}
void set(AlprDetectorTypeNet value)
{
this->m_config->detector = static_cast<int>(value);
}
}
property float DetectionIterationIncrease {
float get()
{
return this->m_config->detection_iteration_increase;
}
void set(float value)
{
this->m_config->detection_iteration_increase = value;
}
}
property int DetectionStrictness {
int get()
{
return this->m_config->detectionStrictness;
}
void set(int value)
{
this->m_config->detectionStrictness = value;
}
}
property float MaxPlateWidthPercent {
float get()
{
return this->m_config->maxPlateWidthPercent;
}
void set(float value)
{
this->m_config->maxPlateWidthPercent = value;
}
}
property float MaxPlateHeightPercent {
float get()
{
return this->m_config->maxPlateHeightPercent;
}
void set(float value)
{
this->m_config->maxPlateHeightPercent = value;
}
}
property int MaxDetectionInputWidth {
int get()
{
return this->m_config->maxDetectionInputWidth;
}
void set(int value)
{
this->m_config->maxDetectionInputWidth = value;
}
}
property int MaxDetectionInputHeight {
int get()
{
return this->m_config->maxDetectionInputHeight;
}
void set(int value)
{
this->m_config->maxDetectionInputHeight = value;
}
}
property bool SkipDetection {
bool get()
{
return this->m_config->skipDetection;
}
void set(bool value)
{
this->m_config->skipDetection = true;
}
}
property String^ PreWarp {
String^ get()
{
return AlprHelper::ToManagedString(this->m_config->prewarp);
}
void set(String^ value)
{
if(String::IsNullOrWhiteSpace(value))
{
this->m_config->prewarp = "";
return;
}
this->m_config->prewarp = marshal_as<std::string>(value);
}
}
property int MaxPlateAngleDegrees {
int get()
{
return this->m_config->maxPlateAngleDegrees;
}
void set(int value)
{
this->m_config->maxPlateAngleDegrees = value;
}
}
property float MinPlateSizeWidthPx {
float get()
{
return this->m_config->minPlateSizeWidthPx;
}
void set(float value)
{
this->m_config->minPlateSizeWidthPx = value;
}
}
property float MinPlateSizeHeightPx {
float get()
{
return this->m_config->minPlateSizeHeightPx;
}
void set(float value)
{
this->m_config->minPlateSizeHeightPx = value;
}
}
property bool Multiline {
bool get()
{
return this->m_config->multiline;
}
void set(bool value)
{
this->m_config->multiline = value;
}
}
property float PlateWidthMM {
float get()
{
return this->m_config->plateWidthMM;
}
void set(float value)
{
this->m_config->plateWidthMM = value;
}
}
property float PlateHeightMM {
float get()
{
return this->m_config->plateHeightMM;
}
void set(float value)
{
this->m_config->plateHeightMM = value;
}
}
property float CharWhitespaceTopMM {
float get()
{
return this->m_config->charWhitespaceTopMM;
}
void set(float value)
{
this->m_config->charWhitespaceTopMM = value;
}
}
property float CharWhitespaceBotMM {
float get()
{
return this->m_config->charWhitespaceBotMM;
}
void set(float value)
{
this->m_config->charWhitespaceBotMM = value;
}
}
property int TemplateWidthPx {
int get()
{
return this->m_config->templateWidthPx;
}
void set(int value)
{
this->m_config->templateWidthPx = value;
}
}
property int TemplateHeightPx {
int get()
{
return this->m_config->templateHeightPx;
}
void set(int value)
{
this->m_config->templateHeightPx = value;
}
}
property int OcrImageWidthPx {
int get()
{
return this->m_config->ocrImageWidthPx;
}
void set(int value)
{
this->m_config->ocrImageWidthPx = value;
}
}
property int OcrImageHeightPx {
int get()
{
return this->m_config->ocrImageHeightPx;
}
void set(int value)
{
this->m_config->ocrImageHeightPx = value;
}
}
property int StateIdImageWidthPx {
int get()
{
return this->m_config->stateIdImageWidthPx;
}
void set(int value)
{
this->m_config->stateIdImageWidthPx = value;
}
}
property int StateIdimageHeightPx {
int get()
{
return this->m_config->stateIdimageHeightPx;
}
void set(int value)
{
this->m_config->stateIdimageHeightPx = value;
}
}
property float CharAnalysisMinPercent {
float get()
{
return this->m_config->charAnalysisMinPercent;
}
void set(float value)
{
this->m_config->charAnalysisMinPercent = value;
}
}
property float CharAnalysisHeightRange {
float get()
{
return this->m_config->charAnalysisHeightRange;
}
void set(float value)
{
this->m_config->charAnalysisHeightRange = value;
}
}
property float CharAnalysisHeightStepSize {
float get()
{
return this->m_config->charAnalysisHeightStepSize;
}
void set(float value)
{
this->m_config->charAnalysisHeightStepSize = value;
}
}
property int CharAnalysisNumSteps {
int get()
{
return this->m_config->charAnalysisNumSteps;
}
void set(int value)
{
this->m_config->charAnalysisNumSteps = value;
}
}
property float PlateLinesSensitivityVertical {
float get()
{
return this->m_config->plateLinesSensitivityVertical;
}
void set(float value)
{
this->m_config->plateLinesSensitivityVertical = value;
}
}
property float PlateLinesSensitivityHorizontal {
float get()
{
return this->m_config->plateLinesSensitivityHorizontal;
}
void set(float value)
{
this->m_config->plateLinesSensitivityHorizontal = value;
}
}
property int SegmentationMinBoxWidthPx {
int get()
{
return this->m_config->segmentationMinBoxWidthPx;
}
void set(int value)
{
this->m_config->segmentationMinBoxWidthPx = value;
}
}
property float SegmentationMinCharHeightPercent {
float get()
{
return this->m_config->segmentationMinCharHeightPercent;
}
void set(float value)
{
this->m_config->segmentationMinCharHeightPercent = value;
}
}
property float SegmentationMaxCharWidthvsAverage {
float get()
{
return this->m_config->segmentationMaxCharWidthvsAverage;
}
void set(float value)
{
this->m_config->segmentationMaxCharWidthvsAverage = value;
}
}
property bool MustMatchPattern {
bool get()
{
return this->m_config->mustMatchPattern;
}
void set(bool value)
{
this->m_config->mustMatchPattern = value;
}
}
property String^ OcrLanguage {
String^ get()
{
return AlprHelper::ToManagedString(this->m_config->ocrLanguage);
}
void set(String^ value)
{
if (String::IsNullOrWhiteSpace(value))
{
return;
}
this->m_config->ocrLanguage = marshal_as<std::string>(value);
}
}
property int OcrMinFontSize {
int get()
{
return this->m_config->ocrMinFontSize;
}
void set(int value)
{
this->m_config->ocrMinFontSize = value;
}
}
property float PostProcessMinConfidence {
float get()
{
return this->m_config->postProcessMinConfidence;
}
void set(float value)
{
this->m_config->postProcessMinConfidence = value;
}
}
property float PostProcessConfidenceSkipLevel {
float get()
{
return this->m_config->postProcessConfidenceSkipLevel;
}
void set(float value)
{
this->m_config->postProcessConfidenceSkipLevel = value;
}
}
property unsigned int PostProcessMinCharacters {
unsigned int get()
{
return this->m_config->postProcessMinCharacters;
}
void set(unsigned int value)
{
this->m_config->postProcessMinCharacters = value;
}
}
property unsigned int PostProcessMaxCharacters {
unsigned int get()
{
return this->m_config->postProcessMaxCharacters;
}
void set(unsigned int value)
{
this->m_config->postProcessMaxCharacters = value;
}
}
property bool DebugGeneral {
bool get()
{
return this->m_config->debugGeneral;
}
void set(bool value)
{
this->m_config->debugGeneral = value;
}
}
property bool DebugTiming {
bool get()
{
return this->m_config->debugTiming;
}
void set(bool value)
{
this->m_config->debugTiming = value;
}
}
property bool DebugPrewarp {
bool get()
{
return this->m_config->debugPrewarp;
}
void set(bool value)
{
this->m_config->debugPrewarp = value;
}
}
property bool DebugDetector {
bool get()
{
return this->m_config->debugDetector;
}
void set(bool value)
{
this->m_config->debugDetector = value;
}
}
property bool DebugStateId {
bool get()
{
return this->m_config->debugStateId;
}
void set(bool value)
{
this->m_config->debugStateId = value;
}
}
property bool DebugPlateLines {
bool get()
{
return this->m_config->debugPlateLines;
}
void set(bool value)
{
this->m_config->debugPlateLines = value;
}
}
property bool DebugPlateCorners {
bool get()
{
return this->m_config->debugPlateCorners;
}
void set(bool value)
{
this->m_config->debugPlateCorners = value;
}
}
property bool DebugCharSegmenter {
bool get()
{
return this->m_config->debugCharSegmenter;
}
void set(bool value)
{
this->m_config->debugCharSegmenter = value;
}
}
property bool DebugCharAnalysis {
bool get()
{
return this->m_config->debugCharAnalysis;
}
void set(bool value)
{
this->m_config->debugCharAnalysis = value;
}
}
property bool DebugColorFiler {
bool get()
{
return this->m_config->debugColorFiler;
}
void set(bool value)
{
this->m_config->debugColorFiler = value;
}
}
property bool DebugOcr {
bool get()
{
return this->m_config->debugOcr;
}
void set(bool value)
{
this->m_config->debugOcr = value;
}
}
property bool DebugPostProcess {
bool get()
{
return this->m_config->debugPostProcess;
}
void set(bool value)
{
this->m_config->debugPostProcess = value;
}
}
property bool DebugShowImages {
bool get()
{
return this->m_config->debugShowImages;
}
void set(bool value)
{
this->m_config->debugShowImages = value;
}
}
property bool DebugPauseOnFrame {
bool get()
{
return this->m_config->debugPauseOnFrame;
}
void set(bool value)
{
this->m_config->debugPauseOnFrame = value;
}
}
void SetDebug(bool value)
{
this->m_config->setDebug(value);
}
String^ GetKeypointsRuntimeDir()
{
return AlprHelper::ToManagedString(this->m_config->getKeypointsRuntimeDir());
}
String^ GetCascadeRuntimeDir()
{
return AlprHelper::ToManagedString(this->m_config->getCascadeRuntimeDir());
}
String^ GetPostProcessRuntimeDir()
{
return AlprHelper::ToManagedString(this->m_config->getPostProcessRuntimeDir());
}
String^ GetTessdataPrefix()
{
return AlprHelper::ToManagedString(this->m_config->getTessdataPrefix());
}
~AlprConfigNet()
{
// void
}
private:
Config *m_config;
};
}

View File

@@ -1,93 +0,0 @@
#pragma once
#using <mscorlib.dll>
#include <msclr\marshal_cppstd.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "alpr.h"
#include "opencv2/imgproc/imgproc.hpp"
#include <vector>
using namespace alpr;
using namespace msclr::interop;
using namespace System;
using namespace System::Runtime::InteropServices;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
using namespace System::IO;
using namespace System::Collections::Generic;
namespace openalprnet
{
private ref class AlprHelper sealed
{
public:
static std::vector<char> ToVector(array<char>^ src)
{
std::vector<char> result(src->Length);
pin_ptr<char> pin(&src[0]);
char *first(pin), *last(pin + src->Length);
std::copy(first, last, result.begin());
return result;
}
static std::vector<char> ToVector(array<Byte>^ src)
{
std::vector<char> result(src->Length);
pin_ptr<Byte> pin(&src[0]);
char* pch = reinterpret_cast<char*>(pin);
char *first(pch), *last(pch + src->Length);
std::copy(first, last, result.begin());
return result;
}
static std::vector<AlprRegionOfInterest> ToVector(List<System::Drawing::Rectangle>^ src)
{
std::vector<AlprRegionOfInterest> result;
for each(System::Drawing::Rectangle^ rect in src)
{
AlprRegionOfInterest roi(rect->X, rect->Y, rect->Width, rect->Height);
result.push_back(roi);
}
return result;
}
static unsigned char* ToCharPtr(array<unsigned char>^ src)
{
//unsigned char* result = (unsigned char*) new unsigned char[src->Length];
pin_ptr<unsigned char> pin(&src[0]);
unsigned char* pc = pin;
return pc;
}
static System::String^ ToManagedString(std::string s)
{
return gcnew String(s.c_str());
}
static System::Drawing::Rectangle ToRectangle(cv::Rect rect)
{
return System::Drawing::Rectangle(rect.x, rect.y, rect.width, rect.height);
}
static List<System::Drawing::Rectangle>^ ToRectangleList(std::vector<cv::Rect> srcRects)
{
List<System::Drawing::Rectangle>^ rects = gcnew List<System::Drawing::Rectangle>();
for each(cv::Rect rect in srcRects)
{
rects->Add(ToRectangle(rect));
}
return rects;
}
};
};

View File

@@ -1,18 +0,0 @@
#pragma once
using namespace System::Threading;
namespace openalprnet
{
private ref class Lock {
Object^ m_pObject;
public:
Lock(Object ^ pObject) : m_pObject(pObject) {
Monitor::Enter(m_pObject);
}
~Lock() {
Monitor::Exit(m_pObject);
}
};
}

View File

@@ -1,71 +0,0 @@
#include "stdafx.h"
#include "motiondetector-net.h"
#include "lock-net.h"
#include "bitmapmat-net.h"
using namespace openalprnet;
void AlprMotionDetectionNet::ResetMotionDetection(Bitmap^ bitmap)
{
BitmapMat^ wrapper = gcnew BitmapMat(bitmap);
ResetMotionDetection(wrapper->Value);
delete wrapper;
}
void AlprMotionDetectionNet::ResetMotionDetection(String^ filename)
{
cv::Mat mat = cv::imread(marshal_as<std::string>(filename));
ResetMotionDetection(mat);
}
void AlprMotionDetectionNet::ResetMotionDetection(MemoryStream^ memoryStream)
{
return ResetMotionDetection(memoryStream->ToArray());
}
void AlprMotionDetectionNet::ResetMotionDetection(array<Byte>^ byteArray)
{
std::vector<char> buffer = AlprHelper::ToVector(byteArray);
cv::Mat mat = cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR);
ResetMotionDetection(mat);
}
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(Bitmap^ bitmap)
{
BitmapMat^ wrapper = gcnew BitmapMat(bitmap);
System::Drawing::Rectangle motion = MotionDetect(wrapper->Value);
delete wrapper;
return motion;
}
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(String^ filename)
{
cv::Mat mat = cv::imread(marshal_as<std::string>(filename));
System::Drawing::Rectangle motion = MotionDetect(mat);
return motion;
}
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(MemoryStream^ memoryStream)
{
return MotionDetect(memoryStream->ToArray());
}
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(array<Byte>^ byteArray)
{
std::vector<char> buffer = AlprHelper::ToVector(byteArray);
cv::Mat mat = cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR);
return MotionDetect(mat);
}
void AlprMotionDetectionNet::ResetMotionDetection(cv::Mat mat)
{
Lock lock(this);
this->m_motionDetector->ResetMotionDetection(&mat);
}
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(cv::Mat mat)
{
Lock lock(this);
cv::Rect rect = this->m_motionDetector->MotionDetect(&mat);
return AlprHelper::ToRectangle(rect);
}

View File

@@ -1,52 +0,0 @@
#pragma once
#include "motiondetector.h" // alpr
#include "helper-net.h"
using namespace alpr;
namespace openalprnet
{
public ref class AlprMotionDetectionNet : IDisposable {
public:
AlprMotionDetectionNet() : m_motionDetector(new MotionDetector())
{
}
void AlprMotionDetectionNet::ResetMotionDetection(Bitmap^ bitmap);
void AlprMotionDetectionNet::ResetMotionDetection(String^ filename);
void AlprMotionDetectionNet::ResetMotionDetection(MemoryStream^ memoryStream);
void AlprMotionDetectionNet::ResetMotionDetection(array<Byte>^ byteArray);
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(Bitmap^ bitmap);
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(String^ filename);
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(MemoryStream^ memoryStream);
System::Drawing::Rectangle AlprMotionDetectionNet::MotionDetect(array<Byte>^ byteArray);
private:
~AlprMotionDetectionNet()
{
if (this->m_disposed)
{
return;
}
this->!AlprMotionDetectionNet();
this->m_disposed = true;
}
!AlprMotionDetectionNet()
{
delete m_motionDetector;
}
private:
void ResetMotionDetection(cv::Mat mat);
System::Drawing::Rectangle MotionDetect(cv::Mat mat);
private:
MotionDetector* m_motionDetector;
bool m_disposed;
};
}

View File

@@ -1,484 +0,0 @@
/*
* Copyright (c) 2015 OpenALPR Technology, Inc.
*
* This file is part of OpenALPR.
*
* OpenALPR is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License
* version 3 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
#include "openalpr-net.h"
using namespace System;
using namespace alpr;
namespace openalprnet {
public ref class AlprPlateNet sealed
{
public:
AlprPlateNet(AlprPlate plate){
m_characters = AlprHelper::ToManagedString(plate.characters);
m_overall_confidence=plate.overall_confidence;
m_matches_template=plate.matches_template;
}
property System::String^ Characters {
System::String^ get() {
return m_characters;
}
}
property float OverallConfidence {
float get() {
return m_overall_confidence;
}
}
property bool MatchesTemplate {
bool get() {
return m_matches_template;
}
}
private:
System::String^ m_characters;
float m_overall_confidence;
bool m_matches_template;
};
public ref class AlprPlateResultNet sealed
{
public:
AlprPlateResultNet(AlprPlateResult result) {
m_plate_index = result.plate_index;
m_processing_time_ms = result.processing_time_ms;
m_regionConfidence = result.regionConfidence;
m_region = AlprHelper::ToManagedString(result.region);
m_bestPlate = gcnew AlprPlateNet(result.bestPlate);
m_plate_points = gcnew List<System::Drawing::Point>(4);
for (int i = 0; i < 4; i++)
{
m_plate_points->Add(System::Drawing::Point(result.plate_points[i].x, result.plate_points[i].y));
}
int num = result.topNPlates.size();
m_topNPlates = gcnew List<AlprPlateNet^>(num);
for (int i = 0; i < num; i++)
{
m_topNPlates->Add(gcnew AlprPlateNet(result.topNPlates[i]));
}
}
property int RequestedTopN {
int get() {
return m_requested_topn;
}
}
property int RegionConfidence {
int get() {
return m_regionConfidence;
}
}
property int PlateIndex {
int get() {
return m_plate_index;
}
}
property System::String^ Region {
System::String^ get() {
return m_region;
}
}
property AlprPlateNet^ BestPlate {
AlprPlateNet^ get() {
return m_bestPlate;
}
}
property List<System::Drawing::Point>^ PlatePoints {
List<System::Drawing::Point>^ get() {
return m_plate_points;
}
}
property List<AlprPlateNet^>^ TopNPlates {
List<AlprPlateNet^>^ get() {
return m_topNPlates;
}
}
property float ProcessingTimeMs {
float get() {
return m_processing_time_ms;
}
}
private:
int m_requested_topn;
int m_regionConfidence;
int m_plate_index;
System::String^ m_region;
float m_processing_time_ms;
List<AlprPlateNet^>^ m_topNPlates;
List<System::Drawing::Point>^ m_plate_points;
AlprPlateNet^ m_bestPlate;
};
public ref class AlprResultsNet sealed
{
public:
AlprResultsNet(AlprResults results) {
m_epoch_time = results.epoch_time;
m_img_width = results.img_width;
m_img_height = results.img_height;
m_total_processing_time_ms = results.total_processing_time_ms;
int num_rois = results.regionsOfInterest.size();
m_regionsOfInterest = gcnew List<System::Drawing::Rectangle>(num_rois);
for (int i = 0; i < num_rois; i++)
{
m_regionsOfInterest->Add(System::Drawing::Rectangle(
results.regionsOfInterest[i].x,
results.regionsOfInterest[i].y,
results.regionsOfInterest[i].width,
results.regionsOfInterest[i].height));
}
int num_plates = results.plates.size();
m_plates = gcnew List<AlprPlateResultNet^>(num_plates);
for (int i = 0; i < num_plates; i++)
{
m_plates->Add(gcnew AlprPlateResultNet(results.plates[i]));
}
std::string json = Alpr::toJson(results);
m_json = AlprHelper::ToManagedString(json);
}
property long EpochTime {
long get() {
return m_epoch_time;
}
}
property int ImageWidth {
int get() {
return m_img_width;
}
}
property int ImageHeight {
int get() {
return m_img_height;
}
}
property float TotalProcessingTimeMs {
float get() {
return m_total_processing_time_ms;
}
}
property List<System::Drawing::Rectangle>^ RegionsOfInterest {
List<System::Drawing::Rectangle>^ get() {
return m_regionsOfInterest;
}
}
property List<AlprPlateResultNet^>^ Plates {
List<AlprPlateResultNet^>^ get() {
return m_plates;
}
}
property System::String^ Json {
System::String^ get() {
return m_json;
}
}
private:
long m_epoch_time;
int m_img_width;
int m_img_height;
float m_total_processing_time_ms;
List<System::Drawing::Rectangle>^ m_regionsOfInterest;
List<AlprPlateResultNet^>^ m_plates;
System::String^ m_json;
};
public ref class AlprFrameEventArgs : public EventArgs
{
public:
AlprFrameEventArgs(int frameNumber, System::Drawing::Image^ frame, AlprResultsNet^ results) {
m_frameNumber = frameNumber;
m_frame = frame;
m_results = results;
m_cancel = false;
}
property int FrameNumber {
int get() {
return m_frameNumber;
}
}
property System::Drawing::Image^ Frame {
System::Drawing::Image^ get() {
return m_frame;
}
}
property AlprResultsNet^ Results {
AlprResultsNet^ get() {
return m_results;
}
}
property bool Cancel {
bool get() {
return m_cancel;
}
void set( bool cancel ) {
m_cancel = cancel;
}
}
private:
int m_frameNumber;
System::Drawing::Image^ m_frame;
AlprResultsNet^ m_results;
bool m_cancel;
};
public ref class AlprNet sealed : IDisposable
{
public:
// Allocate the native object on the C++ Heap via a constructor
AlprNet(System::String^ country, System::String^ configFile, System::String^ runtimeDir) : m_Impl( new Alpr(marshal_as<std::string>(country), marshal_as<std::string>(configFile), marshal_as<std::string>(runtimeDir)) )
{
this->m_config = gcnew AlprConfigNet(this->m_Impl->getConfig());
}
~AlprNet() {
if(this->m_disposed)
{
return;
}
this->!AlprNet();
this->m_disposed = true;
}
property AlprConfigNet^ Configuration {
AlprConfigNet^ get()
{
return this->m_config;
}
}
property int TopN {
int get() {
return m_topN;
}
void set( int topn ){
m_topN = topn;
m_Impl->setTopN(topn);
}
}
property bool DetectRegion {
bool get() {
return m_detectRegion;
}
void set( bool detectRegion ) {
m_detectRegion = detectRegion;
m_Impl->setDetectRegion(detectRegion);
}
}
property System::String^ DefaultRegion {
System::String^ get() {
return m_defaultRegion;
}
void set( System::String^ region ){
m_defaultRegion = region;
m_Impl->setDefaultRegion(marshal_as<std::string>(region));
}
}
event EventHandler<AlprFrameEventArgs^>^ FrameProcessed;
void RecognizeFromVideo(System::String^ videoPath) {
if (System::IO::File::Exists(videoPath)) {
int framenum = 0;
cv::VideoCapture cap = cv::VideoCapture();
cap.open(marshal_as<std::string>(videoPath));
cv::Mat frame;
while (cap.read(frame))
{
std::vector<AlprRegionOfInterest> regionsOfInterest;
regionsOfInterest.push_back(AlprRegionOfInterest(0, 0, frame.cols, frame.rows));
AlprResults results = m_Impl->recognize(frame.data, frame.elemSize(), frame.cols, frame.rows, regionsOfInterest);
int framecolsorig = frame.cols;
if (framecolsorig % 4 != 0) copyMakeBorder(frame, frame, 0, 0, 0, 4 - (framecolsorig % 4), IPL_BORDER_REPLICATE); //Stride has to be multiple of 4
Image^ frameImage = gcnew Bitmap(framecolsorig, frame.rows, frame.step, Imaging::PixelFormat::Format24bppRgb, IntPtr(frame.data));
AlprFrameEventArgs^ alprFrameEventArgs = gcnew AlprFrameEventArgs(framenum, frameImage, gcnew AlprResultsNet(results));
FrameProcessed(this, alprFrameEventArgs);
delete frameImage;
if (alprFrameEventArgs->Cancel) {
break;
}
framenum++;
}
}
else {
throw gcnew System::IO::FileNotFoundException("No video was not found at " + videoPath, videoPath);
}
}
/// <summary>
/// Recognize from an image on disk
/// </summary>
AlprResultsNet^ Recognize(System::String^ filepath) {
return Recognize(filepath, gcnew List<System::Drawing::Rectangle>());
}
/// <summary>
/// Recognize from an image on disk
/// </summary>
AlprResultsNet^ Recognize(System::String^ filepath, List<System::Drawing::Rectangle>^ regionsOfInterest) {
array<Byte>^ byteArray = File::ReadAllBytes(filepath);
return Recognize(byteArray, regionsOfInterest);
}
/// <summary>
/// Recognize from a bitmap
/// </summary>
AlprResultsNet^ Recognize(Bitmap^ bitmap)
{
return Recognize(bitmap, gcnew List<System::Drawing::Rectangle>());
}
/// <summary>
/// Recognize from MemoryStream representing an encoded image (e.g., BMP, PNG, JPG, GIF etc).
/// </summary>
AlprResultsNet^ Recognize(MemoryStream^ memoryStream)
{
return Recognize(memoryStream, gcnew List<System::Drawing::Rectangle>());
}
/// <summary>
/// Recognize from MemoryStream representing an encoded image (e.g., BMP, PNG, JPG, GIF etc).
/// </summary>
AlprResultsNet^ Recognize(MemoryStream^ memoryStream, List<System::Drawing::Rectangle>^ regionsOfInterest)
{
return Recognize(memoryStream->ToArray(), regionsOfInterest);
}
/// <summary>
/// Recognize from byte data representing an encoded image (e.g., BMP, PNG, JPG, GIF etc).
/// </summary>
AlprResultsNet^ Recognize(array<Byte>^ imageBuffer) {
return Recognize(imageBuffer, gcnew List<System::Drawing::Rectangle>());
}
/// <summary>
/// Recognize from a bitmap
/// </summary>
AlprResultsNet^ Recognize(Bitmap^ bitmap, List<System::Drawing::Rectangle>^ regionsOfInterest)
{
BitmapMat^ wrapper = gcnew BitmapMat(bitmap);
AlprResultsNet^ results = Recognize(wrapper, regionsOfInterest);
delete wrapper;
return results;
}
/// <summary>
/// Recognize from byte data representing an encoded image (e.g., BMP, PNG, JPG, GIF etc).
/// </summary>
AlprResultsNet^ Recognize(array<Byte>^ imageBuffer, List<System::Drawing::Rectangle>^ regionsOfInterest) {
BitmapMat^ wrapper = gcnew BitmapMat(imageBuffer);
AlprResultsNet^ results = Recognize(wrapper, regionsOfInterest);
delete wrapper;
return results;
}
/// <summary>
/// Pre-warp from raw pixel data.
/// </summary>
array<Byte>^ PreWarp(array<Byte>^ imageBuffer)
{
std::vector<char> buffer = AlprHelper::ToVector(imageBuffer);
cv::Mat src = cv::imdecode(buffer, CV_LOAD_IMAGE_COLOR);
alpr::PreWarp *preWarp = new alpr::PreWarp(m_Impl->getConfig());
cv::Mat warpedImage = preWarp->warpImage(src);
std::vector<uchar> warpedImageVector;
cv::imencode(".jpg", warpedImage, warpedImageVector);
const size_t warpedImageSize = warpedImageVector.size();
array<Byte>^ warpedImageByteArray = gcnew array<Byte>(warpedImageSize);
pin_ptr<Byte> pin(&warpedImageByteArray[0]);
std::memcpy(pin, &warpedImageVector[0], warpedImageSize);
delete preWarp;
return warpedImageByteArray;
}
bool IsLoaded() {
return m_Impl->isLoaded();
}
static System::String^ GetVersion() {
return AlprHelper::ToManagedString(Alpr::getVersion());
}
protected:
AlprResultsNet^ Recognize(BitmapMat^ bitmapMat, List<System::Drawing::Rectangle>^ regionsOfInterest) {
cv::Mat frame = bitmapMat->Value;
std::vector<AlprRegionOfInterest> rois = AlprHelper::ToVector(regionsOfInterest);
AlprResults results = m_Impl->recognize(frame.data, frame.elemSize(), frame.cols, frame.rows, rois);
return gcnew AlprResultsNet(results);
}
// Deallocate the native object on the finalizer just in case no destructor is called
!AlprNet() {
delete m_Impl;
delete m_config;
}
private:
Alpr * m_Impl;
AlprConfigNet^ m_config;
int m_topN;
bool m_detectRegion;
System::String^ m_defaultRegion;
bool m_disposed;
};
}

View File

@@ -1,23 +0,0 @@
#pragma once
#include "alpr.h"
#include "prewarp.h"
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#using <mscorlib.dll>
#include <msclr\marshal_cppstd.h>
#include "helper-net.h"
#include "bitmapmat-net.h"
#include "motiondetector-net.h"
#include "config-net.h"
namespace openalprnet {
}

View File

@@ -1,187 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4044340C-C435-4A1F-8F12-0806C38AE3B6}</ProjectGuid>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<Keyword>ManagedCProj</Keyword>
<RootNamespace>openalprnet</RootNamespace>
<OpenALPRVersion>2.1.0</OpenALPRVersion>
<PlatformToolset>v120</PlatformToolset>
<PlatformToolset Condition="$(VisualStudioVersion)=='14.0'">v140</PlatformToolset>
<OpenALPRWindowsDir>..\..\..\..\windows</OpenALPRWindowsDir>
<CudaGeneration Condition="$(CudaGeneration)=='' OR $(CudaGeneration)=='None'">None</CudaGeneration>
<OpenALPRDistDir Condition="$(CudaGeneration)=='None'">$(OpenALPRWindowsDir)\build\dist\$(OpenALPRVersion)\$(PlatformToolset)\$(Configuration)\$(Platform)</OpenALPRDistDir>
<OpenALPRDistDir Condition="$(CudaGeneration)=='Fermi'">$(OpenALPRWindowsDir)\build\dist\$(OpenALPRVersion)\$(PlatformToolset)\$(Configuration)\$(Platform)_CUDA_Fermi</OpenALPRDistDir>
<OpenALPRDistDir Condition="$(CudaGeneration)=='Kepler'">$(OpenALPRWindowsDir)\build\dist\$(OpenALPRVersion)\$(PlatformToolset)\$(Configuration)\$(Platform)_CUDA_Kepler</OpenALPRDistDir>
<OpenCVVersion>300</OpenCVVersion>
<TesseractVersion>303</TesseractVersion>
<LeptonicaVersion>170</LeptonicaVersion>
<DebugPrefix Condition="'$(Configuration)'=='Debug'">d</DebugPrefix>
<DebugPrefix Condition="'$(Configuration)'!='Debug'">
</DebugPrefix>
<TesseractDebugPrefix Condition="'$(Configuration)'=='Debug'">-debug</TesseractDebugPrefix>
<TesseractDebugPrefix Condition="'$(Configuration)'!='Debug'">
</TesseractDebugPrefix>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(OpenALPRWindowsDir)\tesseract-ocr\src\api;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccstruct;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccmain;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccutil;$(OpenALPRWindowsDir)\opencv;$(OpenALPRWindowsDir)\opencv\include;$(OpenALPRWindowsDir)\opencv\include\opencv;$(OpenALPRWindowsDir)\opencv\modules\core\include;$(OpenALPRWindowsDir)\opencv\modules\flann\include;$(OpenALPRWindowsDir)\opencv\modules\imgproc\include;$(OpenALPRWindowsDir)\opencv\modules\highgui\include;$(OpenALPRWindowsDir)\opencv\modules\features2d\include;$(OpenALPRWindowsDir)\opencv\modules\calib3d\include;$(OpenALPRWindowsDir)\opencv\modules\ml\include;$(OpenALPRWindowsDir)\opencv\modules\video\include;$(OpenALPRWindowsDir)\opencv\modules\legacy\include;$(OpenALPRWindowsDir)\opencv\modules\objdetect\include;$(OpenALPRWindowsDir)\opencv\modules\photo\include;$(OpenALPRWindowsDir)\opencv\modules\gpu\include;$(OpenALPRWindowsDir)\opencv\modules\nonfree\include;$(OpenALPRWindowsDir)\opencv\modules\contrib\include;$(OpenALPRWindowsDir)\opencv\modules\stitching\include;$(OpenALPRWindowsDir)\opencv\modules\ts\include;$(OpenALPRWindowsDir)\opencv\modules\videostab\include;$(OpenALPRWindowsDir)\..\src\openalpr;$(OpenALPRWindowsDir)\opencv\modules\hal\include;$(OpenALPRWindowsDir)\opencv\modules\imgcodecs\include;$(OpenALPRWindowsDir)\opencv\modules\videoio\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;$(OpenALPRDistDir)\libtesseract$(TesseractVersion)-static$(TesseractDebugPrefix).lib;$(OpenALPRDistDir)\liblept$(LeptonicaVersion)$(DebugPrefix).lib;ws2_32.lib;$(OpenALPRDistDir)\support.lib;$(OpenALPRDistDir)\openalpr-static.lib;$(OpenALPRDistDir)\statedetection.lib;$(OpenALPRDistDir)\opencv_world$(OpenCVVersion)$(DebugPrefix).lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(OpenALPRWindowsDir)\tesseract-ocr\src\api;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccstruct;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccmain;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccutil;$(OpenALPRWindowsDir)\opencv;$(OpenALPRWindowsDir)\opencv\include;$(OpenALPRWindowsDir)\opencv\include\opencv;$(OpenALPRWindowsDir)\opencv\modules\core\include;$(OpenALPRWindowsDir)\opencv\modules\flann\include;$(OpenALPRWindowsDir)\opencv\modules\imgproc\include;$(OpenALPRWindowsDir)\opencv\modules\highgui\include;$(OpenALPRWindowsDir)\opencv\modules\features2d\include;$(OpenALPRWindowsDir)\opencv\modules\calib3d\include;$(OpenALPRWindowsDir)\opencv\modules\ml\include;$(OpenALPRWindowsDir)\opencv\modules\video\include;$(OpenALPRWindowsDir)\opencv\modules\legacy\include;$(OpenALPRWindowsDir)\opencv\modules\objdetect\include;$(OpenALPRWindowsDir)\opencv\modules\photo\include;$(OpenALPRWindowsDir)\opencv\modules\gpu\include;$(OpenALPRWindowsDir)\opencv\modules\nonfree\include;$(OpenALPRWindowsDir)\opencv\modules\contrib\include;$(OpenALPRWindowsDir)\opencv\modules\stitching\include;$(OpenALPRWindowsDir)\opencv\modules\ts\include;$(OpenALPRWindowsDir)\opencv\modules\videostab\include;$(OpenALPRWindowsDir)\..\src\openalpr;$(OpenALPRWindowsDir)\opencv\modules\hal\include;$(OpenALPRWindowsDir)\opencv\modules\imgcodecs\include;$(OpenALPRWindowsDir)\opencv\modules\videoio\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;$(OpenALPRDistDir)\libtesseract$(TesseractVersion)-static$(TesseractDebugPrefix).lib;$(OpenALPRDistDir)\liblept$(LeptonicaVersion)$(DebugPrefix).lib;ws2_32.lib;$(OpenALPRDistDir)\support.lib;$(OpenALPRDistDir)\openalpr-static.lib;$(OpenALPRDistDir)\statedetection.lib;$(OpenALPRDistDir)\opencv_world$(OpenCVVersion)$(DebugPrefix).lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(OpenALPRWindowsDir)\tesseract-ocr\src\api;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccstruct;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccmain;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccutil;$(OpenALPRWindowsDir)\opencv;$(OpenALPRWindowsDir)\opencv\include;$(OpenALPRWindowsDir)\opencv\include\opencv;$(OpenALPRWindowsDir)\opencv\modules\core\include;$(OpenALPRWindowsDir)\opencv\modules\flann\include;$(OpenALPRWindowsDir)\opencv\modules\imgproc\include;$(OpenALPRWindowsDir)\opencv\modules\highgui\include;$(OpenALPRWindowsDir)\opencv\modules\features2d\include;$(OpenALPRWindowsDir)\opencv\modules\calib3d\include;$(OpenALPRWindowsDir)\opencv\modules\ml\include;$(OpenALPRWindowsDir)\opencv\modules\video\include;$(OpenALPRWindowsDir)\opencv\modules\legacy\include;$(OpenALPRWindowsDir)\opencv\modules\objdetect\include;$(OpenALPRWindowsDir)\opencv\modules\photo\include;$(OpenALPRWindowsDir)\opencv\modules\gpu\include;$(OpenALPRWindowsDir)\opencv\modules\nonfree\include;$(OpenALPRWindowsDir)\opencv\modules\contrib\include;$(OpenALPRWindowsDir)\opencv\modules\stitching\include;$(OpenALPRWindowsDir)\opencv\modules\ts\include;$(OpenALPRWindowsDir)\opencv\modules\videostab\include;$(OpenALPRWindowsDir)\..\src\openalpr;$(OpenALPRWindowsDir)\opencv\modules\hal\include;$(OpenALPRWindowsDir)\opencv\modules\imgcodecs\include;$(OpenALPRWindowsDir)\opencv\modules\videoio\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;$(OpenALPRDistDir)\opencv_world$(OpenCVVersion)$(DebugPrefix).lib;$(OpenALPRDistDir)\libtesseract$(TesseractVersion)-static$(TesseractDebugPrefix).lib;$(OpenALPRDistDir)\liblept$(LeptonicaVersion)$(DebugPrefix).lib;ws2_32.lib;$(OpenALPRDistDir)\support.lib;$(OpenALPRDistDir)\openalpr-static.lib;$(OpenALPRDistDir)\statedetection.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>$(OpenALPRWindowsDir)\tesseract-ocr\src\api;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccstruct;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccmain;$(OpenALPRWindowsDir)\tesseract-ocr\src\ccutil;$(OpenALPRWindowsDir)\opencv;$(OpenALPRWindowsDir)\opencv\include;$(OpenALPRWindowsDir)\opencv\include\opencv;$(OpenALPRWindowsDir)\opencv\modules\core\include;$(OpenALPRWindowsDir)\opencv\modules\flann\include;$(OpenALPRWindowsDir)\opencv\modules\imgproc\include;$(OpenALPRWindowsDir)\opencv\modules\highgui\include;$(OpenALPRWindowsDir)\opencv\modules\features2d\include;$(OpenALPRWindowsDir)\opencv\modules\calib3d\include;$(OpenALPRWindowsDir)\opencv\modules\ml\include;$(OpenALPRWindowsDir)\opencv\modules\video\include;$(OpenALPRWindowsDir)\opencv\modules\legacy\include;$(OpenALPRWindowsDir)\opencv\modules\objdetect\include;$(OpenALPRWindowsDir)\opencv\modules\photo\include;$(OpenALPRWindowsDir)\opencv\modules\gpu\include;$(OpenALPRWindowsDir)\opencv\modules\nonfree\include;$(OpenALPRWindowsDir)\opencv\modules\contrib\include;$(OpenALPRWindowsDir)\opencv\modules\stitching\include;$(OpenALPRWindowsDir)\opencv\modules\ts\include;$(OpenALPRWindowsDir)\opencv\modules\videostab\include;$(OpenALPRWindowsDir)\..\src\openalpr;$(OpenALPRWindowsDir)\opencv\modules\hal\include;$(OpenALPRWindowsDir)\opencv\modules\imgcodecs\include;$(OpenALPRWindowsDir)\opencv\modules\videoio\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;$(OpenALPRDistDir)\opencv_world$(OpenCVVersion)$(DebugPrefix).lib;$(OpenALPRDistDir)\libtesseract$(TesseractVersion)-static$(TesseractDebugPrefix).lib;$(OpenALPRDistDir)\liblept$(LeptonicaVersion)$(DebugPrefix).lib;ws2_32.lib;$(OpenALPRDistDir)\support.lib;$(OpenALPRDistDir)\openalpr-static.lib;$(OpenALPRDistDir)\statedetection.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="bitmapmat-net.h" />
<ClInclude Include="config-net.h" />
<ClInclude Include="helper-net.h" />
<ClInclude Include="lock-net.h" />
<ClInclude Include="motiondetector-net.h" />
<ClInclude Include="openalpr-net.h" />
<ClInclude Include="types-net.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="Stdafx.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AssemblyInfo.cpp" />
<ClCompile Include="bitmapmat-net.cpp" />
<ClCompile Include="motiondetector-net.cpp" />
<ClCompile Include="openalpr-net.cpp" />
<ClCompile Include="Stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="app.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,73 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="openalpr-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="bitmapmat-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="helper-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="motiondetectornet-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="config-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="types-net.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="lock-net.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="openalpr-net.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="AssemblyInfo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bitmapmat-net.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="motiondetector-net.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="app.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

View File

@@ -1,3 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by app.rc

View File

@@ -1,19 +0,0 @@
#pragma once
#include "alpr.h" // alpr
#include "config.h" // alpr
using namespace alpr;
namespace openalprnet
{
namespace types
{
public enum class AlprDetectorTypeNet : int {
DetectorLbpCpu = alpr::DETECTOR_LBP_CPU,
DetectorLbpGpu = alpr::DETECTOR_LBP_GPU,
DetectorLbpMorphCpu = alpr::DETECTOR_MORPH_CPU,
DetectorLbpOpencl = alpr::DETECTOR_LBP_OPENCL
};
}
}

View File

@@ -1,82 +0,0 @@
/*
* Copyright (c) 2015 OpenALPR Technology, Inc.
*
* This file is part of OpenALPR.
*
* OpenALPR is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License
* version 3 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace openalprnet_cli
{
internal static class CommandLine
{
private const string NameGroup = "name"; // Names of capture groups
private const string ValueGroup = "value";
/* The regex that extracts names and comma-separated values for switches
in the form (<switch>[="value 1",value2,...])+ */
private static readonly Regex RexPattern =
new Regex(@"(?<name>[^=]+)=?((?<quoted>\""?)(?<value>(?(quoted)[^\""]+|[^,]+))\""?,?)*",
RegexOptions.Compiled | RegexOptions.CultureInvariant |
RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase);
public static void Process(this string[] args, Action printUsage, params Switch[] switches)
{
/* Run through all matches in the argument list and if any of the switches
match, get the values and invoke the handler we were given. We do a Sum()
here for 2 reasons; a) To actually run the handlers
and b) see if any were invoked at all (each returns 1 if invoked).
If none were invoked, we simply invoke the printUsage handler. */
if ((from arg in args
from Match match in RexPattern.Matches(arg)
from s in switches
where match.Success &&
((string.Compare(match.Groups[NameGroup].Value, s.Name, true) == 0) ||
(string.Compare(match.Groups[NameGroup].Value, s.ShortForm, true) == 0))
select s.InvokeHandler(match.Groups[ValueGroup].Value.Split(','))).Sum() == 0)
printUsage(); // We didn't find any switches
}
public class Switch // Class that encapsulates switch data.
{
public Switch(string name, Action<IEnumerable<string>> handler, string shortForm)
{
Name = name;
Handler = handler;
ShortForm = shortForm;
}
public Switch(string name, Action<IEnumerable<string>> handler)
{
Name = name;
Handler = handler;
ShortForm = null;
}
public string Name { get; private set; }
public string ShortForm { get; private set; }
public Action<IEnumerable<string>> Handler { get; private set; }
public int InvokeHandler(string[] values)
{
Handler(values);
return 1;
}
}
}
}

View File

@@ -1,140 +0,0 @@
/*
* Copyright (c) 2015 OpenALPR Technology, Inc.
*
* This file is part of OpenALPR.
*
* OpenALPR is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License
* version 3 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using openalprnet;
namespace openalprnet_cli
{
internal class Program
{
public static string AssemblyDirectory
{
get
{
var codeBase = Assembly.GetExecutingAssembly().CodeBase;
var uri = new UriBuilder(codeBase);
var path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
private static bool StrToBool(string s)
{
return !string.IsNullOrEmpty(s) && s.Trim() == "1";
}
private static void Main(string[] args)
{
var region = "us";
var detectRegion = false;
var benchmark = false;
var json = false;
var filename = string.Empty;
args.Process(
() => Console.WriteLine("Usage: r=us/eu b=0/1 j=0/1 d=0/1 f=<filename>"),
new CommandLine.Switch("r",
val => { if (val.Any()) region = val.First().Trim().ToLower(); }),
new CommandLine.Switch("b",
val => { if (val.Any()) benchmark = StrToBool(val.First()); }),
new CommandLine.Switch("j",
val => { if (val.Any()) json = StrToBool(val.First()); }),
new CommandLine.Switch("d",
val => { if (val.Any()) detectRegion = StrToBool(val.First()); }),
new CommandLine.Switch("f",
val => { if (val.Any()) filename = val.First().Trim(); })
);
Console.WriteLine("OpenAlpr Version: {0}", AlprNet.GetVersion());
var config = Path.Combine(AssemblyDirectory, "openalpr.conf");
var runtime_data = Path.Combine(AssemblyDirectory, "runtime_data");
var alpr = new AlprNet(region, config, runtime_data);
if (!alpr.IsLoaded())
{
Console.WriteLine("OpenAlpr failed to load!");
return;
}
//var samplePath = Path.Combine(AssemblyDirectory, @"samples\eu-1.jpg");
//alpr.TopN = 3;
alpr.DefaultRegion = region;
alpr.DetectRegion = detectRegion;
if (Directory.Exists(filename))
{
var files = Directory.GetFiles(filename, "*.jpg", SearchOption.TopDirectoryOnly);
foreach (var fname in files)
{
PerformAlpr(alpr, fname, benchmark, json);
}
return;
}
if (!File.Exists(filename))
{
Console.WriteLine("The file doesn't exist!");
return;
}
var buffer = File.ReadAllBytes(filename);
PerformAlpr(alpr, buffer, benchmark, json);
}
private static void PerformAlpr(AlprNet alpr, string filename, bool benchmark, bool writeJson)
{
Console.WriteLine("Processing '{0}'...\n------------------", Path.GetFileName(filename));
var buffer = File.ReadAllBytes(filename);
PerformAlpr(alpr, buffer, benchmark, writeJson);
}
private static void PerformAlpr(AlprNet alpr, byte[] buffer, bool benchmark, bool writeJson)
{
var sw = Stopwatch.StartNew();
var results = alpr.Recognize(buffer);
sw.Stop();
if (benchmark)
{
Console.WriteLine("Total Time to process image(s): {0} msec(s)", sw.ElapsedMilliseconds);
}
if (writeJson)
{
//Console.WriteLine(alpr.toJson());
}
else
{
var i = 0;
foreach (var result in results.Plates)
{
Console.WriteLine("Plate {0}: {1} result(s)", i++, result.TopNPlates.Count);
Console.WriteLine(" Processing Time: {0} msec(s)", result.ProcessingTimeMs);
foreach (var plate in result.TopNPlates)
{
Console.WriteLine(" - {0}\t Confidence: {1}\tMatches Template: {2}", plate.Characters,
plate.OverallConfidence, plate.MatchesTemplate);
}
}
}
}
}
}

View File

@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("openalprnet-cli")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("openalprnet-cli")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("42477de2-b13e-4959-a03e-ae43c65e68f3")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -1,96 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{BD50C6C1-EEB9-48D2-A87C-70F5342579DD}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>openalprnet_cli</RootNamespace>
<AssemblyName>openalprnet-cli</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisLogFile>bin\Debug\openalprnet-cli.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisLogFile>bin\Release\openalprnet-cli.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CommandLine.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\openalpr-net\openalpr-net.vcxproj">
<Project>{4044340C-C435-4A1F-8F12-0806C38AE3B6}</Project>
<Name>openalpr-net</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,192 +0,0 @@
namespace openalprnet_windemo
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnDetect = new System.Windows.Forms.Button();
this.picLicensePlate = new System.Windows.Forms.PictureBox();
this.picOriginal = new System.Windows.Forms.PictureBox();
this.lbxPlates = new System.Windows.Forms.ListBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.label4 = new System.Windows.Forms.Label();
this.rbUSA = new System.Windows.Forms.RadioButton();
this.rbEU = new System.Windows.Forms.RadioButton();
((System.ComponentModel.ISupportInitialize)(this.picLicensePlate)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.picOriginal)).BeginInit();
this.SuspendLayout();
//
// btnDetect
//
this.btnDetect.Location = new System.Drawing.Point(830, 25);
this.btnDetect.Name = "btnDetect";
this.btnDetect.Size = new System.Drawing.Size(291, 37);
this.btnDetect.TabIndex = 0;
this.btnDetect.Text = "Detect License Plate";
this.btnDetect.UseVisualStyleBackColor = true;
this.btnDetect.Click += new System.EventHandler(this.button1_Click);
//
// picLicensePlate
//
this.picLicensePlate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.picLicensePlate.Location = new System.Drawing.Point(827, 403);
this.picLicensePlate.Name = "picLicensePlate";
this.picLicensePlate.Size = new System.Drawing.Size(294, 123);
this.picLicensePlate.TabIndex = 1;
this.picLicensePlate.TabStop = false;
//
// picOriginal
//
this.picOriginal.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.picOriginal.Location = new System.Drawing.Point(12, 25);
this.picOriginal.Name = "picOriginal";
this.picOriginal.Size = new System.Drawing.Size(809, 501);
this.picOriginal.TabIndex = 2;
this.picOriginal.TabStop = false;
//
// lbxPlates
//
this.lbxPlates.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbxPlates.FormattingEnabled = true;
this.lbxPlates.Location = new System.Drawing.Point(827, 81);
this.lbxPlates.Name = "lbxPlates";
this.lbxPlates.Size = new System.Drawing.Size(294, 303);
this.lbxPlates.TabIndex = 3;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(76, 13);
this.label1.TabIndex = 4;
this.label1.Text = "Source Image:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(827, 387);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(96, 13);
this.label2.TabIndex = 5;
this.label2.Text = "License Plate ROI:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(827, 65);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(124, 13);
this.label3.TabIndex = 6;
this.label3.Text = "Matched License Plates:";
//
// openFileDialog
//
this.openFileDialog.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif;" +
" *.png|All files (*.*)|*.*";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(827, 9);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(44, 13);
this.label4.TabIndex = 7;
this.label4.Text = "Region:";
//
// rbUSA
//
this.rbUSA.AutoSize = true;
this.rbUSA.Checked = true;
this.rbUSA.Location = new System.Drawing.Point(878, 7);
this.rbUSA.Name = "rbUSA";
this.rbUSA.Size = new System.Drawing.Size(40, 17);
this.rbUSA.TabIndex = 8;
this.rbUSA.TabStop = true;
this.rbUSA.Text = "US";
this.rbUSA.UseVisualStyleBackColor = true;
//
// rbEU
//
this.rbEU.AutoSize = true;
this.rbEU.Location = new System.Drawing.Point(924, 7);
this.rbEU.Name = "rbEU";
this.rbEU.Size = new System.Drawing.Size(40, 17);
this.rbEU.TabIndex = 9;
this.rbEU.Text = "EU";
this.rbEU.UseVisualStyleBackColor = true;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1128, 538);
this.Controls.Add(this.rbEU);
this.Controls.Add(this.rbUSA);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.lbxPlates);
this.Controls.Add(this.picOriginal);
this.Controls.Add(this.picLicensePlate);
this.Controls.Add(this.btnDetect);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Form1";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "OpenALPR-Net Demo";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.picLicensePlate)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.picOriginal)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btnDetect;
private System.Windows.Forms.PictureBox picLicensePlate;
private System.Windows.Forms.PictureBox picOriginal;
private System.Windows.Forms.ListBox lbxPlates;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.OpenFileDialog openFileDialog;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.RadioButton rbUSA;
private System.Windows.Forms.RadioButton rbEU;
}
}

View File

@@ -1,187 +0,0 @@
/*
* Copyright (c) 2015 OpenALPR Technology, Inc.
*
* This file is part of OpenALPR.
*
* OpenALPR is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License
* version 3 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
using openalprnet;
namespace openalprnet_windemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string AssemblyDirectory
{
get
{
var codeBase = Assembly.GetExecutingAssembly().CodeBase;
var uri = new UriBuilder(codeBase);
var path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
public Rectangle boundingRectangle(List<Point> points)
{
// Add checks here, if necessary, to make sure that points is not null,
// and that it contains at least one (or perhaps two?) elements
var minX = points.Min(p => p.X);
var minY = points.Min(p => p.Y);
var maxX = points.Max(p => p.X);
var maxY = points.Max(p => p.Y);
return new Rectangle(new Point(minX, minY), new Size(maxX - minX, maxY - minY));
}
private static Image cropImage(Image img, Rectangle cropArea)
{
var bmpImage = new Bitmap(img);
return bmpImage.Clone(cropArea, bmpImage.PixelFormat);
}
public static Bitmap combineImages(List<Image> images)
{
//read all images into memory
Bitmap finalImage = null;
try
{
var width = 0;
var height = 0;
foreach (var bmp in images)
{
width += bmp.Width;
height = bmp.Height > height ? bmp.Height : height;
}
//create a bitmap to hold the combined image
finalImage = new Bitmap(width, height);
//get a graphics object from the image so we can draw on it
using (var g = Graphics.FromImage(finalImage))
{
//set background color
g.Clear(Color.Black);
//go through each image and draw it on the final image
var offset = 0;
foreach (Bitmap image in images)
{
g.DrawImage(image,
new Rectangle(offset, 0, image.Width, image.Height));
offset += image.Width;
}
}
return finalImage;
}
catch (Exception ex)
{
if (finalImage != null)
finalImage.Dispose();
throw ex;
}
finally
{
//clean up memory
foreach (var image in images)
{
image.Dispose();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
{
processImageFile(openFileDialog.FileName);
}
}
private void processImageFile(string fileName)
{
resetControls();
var region = rbUSA.Checked ? "us" : "eu";
String config_file = Path.Combine(AssemblyDirectory, "openalpr.conf");
String runtime_data_dir = Path.Combine(AssemblyDirectory, "runtime_data");
using (var alpr = new AlprNet(region, config_file, runtime_data_dir))
{
if (!alpr.IsLoaded())
{
lbxPlates.Items.Add("Error initializing OpenALPR");
return;
}
picOriginal.ImageLocation = fileName;
picOriginal.Load();
var results = alpr.Recognize(fileName);
var images = new List<Image>(results.Plates.Count());
var i = 1;
foreach (var result in results.Plates)
{
var rect = boundingRectangle(result.PlatePoints);
var img = Image.FromFile(fileName);
var cropped = cropImage(img, rect);
images.Add(cropped);
lbxPlates.Items.Add("\t\t-- Plate #" + i++ + " --");
foreach (var plate in result.TopNPlates)
{
lbxPlates.Items.Add(string.Format(@"{0} {1}% {2}",
plate.Characters.PadRight(12),
plate.OverallConfidence.ToString("N1").PadLeft(8),
plate.MatchesTemplate.ToString().PadLeft(8)));
}
}
if (images.Any())
{
picLicensePlate.Image = combineImages(images);
}
}
}
private void resetControls()
{
picOriginal.Image = null;
picLicensePlate.Image = null;
lbxPlates.Items.Clear();
}
private void Form1_Load(object sender, EventArgs e)
{
resetControls();
}
}
}

View File

@@ -1,123 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -1,39 +0,0 @@
/*
* Copyright (c) 2015 OpenALPR Technology, Inc.
*
* This file is part of OpenALPR.
*
* OpenALPR is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License
* version 3 as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace openalprnet_windemo
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("openalprnet-windemo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("openalprnet-windemo")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b1ab96ca-afe9-497d-9aa0-74ace195dfca")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -1,63 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace openalprnet_windemo.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("openalprnet_windemo.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace openalprnet_windemo.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,3 +0,0 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C7863A14-55D2-4389-9072-04AA6E30AAD1}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>openalprnet_windemo</RootNamespace>
<AssemblyName>openalprnet-windemo</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisLogFile>bin\Debug\openalprnet-windemo.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisLogFile>bin\Release\openalprnet-windemo.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>appicon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\openalpr-net\openalpr-net.vcxproj">
<Project>{4044340C-C435-4A1F-8F12-0806C38AE3B6}</Project>
<Name>openalpr-net</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="appicon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>