Распознавание автомобильного номера с изображения на C# (.NET)

Довелось мне не так давно помогать с запуском одного проекта под .NET на WCF — под x64 систему, проект нормально работал на x86 но отказывался работать на x64. В целом как я и ожидал проблема решалась довольно просто, помимо основной проблемы всплыло ещё несколько, в процессе решения которых пришлось познакомиться с очень интересной библиотекой Emgu CV, которая позволяет делать множество замечательных вещей, среди которых распознавание номера на изображении.

Благодаря этой библиотеке можно очень легко и просто внедрить распознавание номера в свою программу. Вот я и решил поделиться новым знанием, вдруг кому-то захочется что-то эдакое реализовать. Например мне сразу пришла в голову идея автоматически открывающегося шлагбаума, без всяких брелков. :) Качество распознавания, скажем — так себе, хотя возможно я просто не достаточно разобрался в возможностях, и всё делал как по умолчанию в примерах, но тем не менее поиграться стоит — вещь интересная.

В принципе, в комплекте с библиотекой есть целый набор примеров, в том числе и пример с распознаванием автомобильного номера. Но в этой публикации я приведу свой пример.

Итак, приступим…

Подробнее

Работаем с базой данных MySql из .NET Core C#

В данной публикации мы рассмотрим как подключиться к базе данных MySql из приложения на .Net Core.

1. Если у вас ещё не установлен .Net Core то устанавливаем: .NET Core.

2. Далее создаем новый проект .NET Core

mkdir MySqlCoreSample
cd MySqlCoreSample
dotnet new


После выполнения этих команд в папке MySqlCoreSample появится 2 файла: «Program.cs», «project.json».
Это простейший шаблон приложения на .NET Core.
В эти файлы мы и будем вносить изменения, для чего будем использовать Visual Studio Code.

Подробнее

Ошибка - UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval id character

Ощибка: UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: inval id character

Происходит при попытке запустить проект командой: python manage.py runserver

Лечение:

Ищем файл: python\lib\site-packages\django\utils\autoreload.py

Затем добавляем в функцию restart_with_reloader строчку:

new_environ['PATH'] = os.path.abspath(new_environ['PATH'].encode('ascii', 'replace'))



Должно получиться как-то так:

def restart_with_reloader():
    while True:
        args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
        if sys.platform == "win32":
            args = ['"%s"' % arg for arg in args]
        new_environ = os.environ.copy()
        new_environ["RUN_MAIN"] = 'true'
        new_environ['PATH'] = os.path.abspath(new_environ['PATH'].encode('ascii', 'replace'))
        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
        if exit_code != 3:
            return exit_code



После этих изменений, лично у меня всё заработало, Python 3.4 + Windows 10.

Надеюсь и у вас всё получится.

Подробнее

Установка Pillow на Python 3 под Windows

Ниже приведен рабочий пример (у меня сработало на версиях 3.5 и 3.4) установки модуля Pillow.

Для установки нам понадобится Python версии 3.5 или 3.4 (на версии 3.6 на сегодняшний день 28.12.2016 — не работает)
Скачиваем, устанавливаем — в этом я думаю трудностей не возникнет.

Далее, устанавливать модуль будем с помощью PIP, но…

Далее всё действие происходит в командной строке:

Для начала выполним вот эту команду:

python -m pip install --upgrade pip wheel setuptools


(без нее, ну никак не «заведётся»)

Затем всё просто:

pip3 install pillow


Подробнее

Настраиваем кодировки в Visual Studio для Python

Вообщем ситуация такая. Решил я поизучать Python. Посмотрел разные среды разработки, и решил остановиться на уже знакомой и уютненькой Visual Studio, тем более, что по работе в основном на C# писать приходится, установлена, удобная, привычная. Короче приступил к написанию своего первого Hello World-а.

Написал вот такое:

name = input ('Введите слово: ')
print ('Ваше слово ', name)


И вместо русских букв в консоли увидел кракозябры. :( 

Покопав немного «интернеты», нашёл рекомендацию указывать кодировку в начале файла так:

# -*- condig: utf-8 -*-


Сделал, не помогло… :( 
Стал копать дальше.
Студия фалы сохраняет по умолчанию в кодировке Win1251 — ага!!! подумал я!!!
Правим:
File -> Advanced Save Options
  

Это действие уже помогло, но лишь частично. По команде print русский текст стал выводиться корректно. А вот текст в команде input остался кракозябрами.

Но и этой проблеме решение есть:
Tools -> Options -> Pyton Tools -> Debugging
  
Убираем галочку «Tee program output to Debug Output window»

После этого действия всё работает корректно, буквы русские во всех случаях.
Мне помогло, надеюсь и вам поможет.

Подробнее

ASP.NET MVC проект на .NET Core в VS Code. Часть 2 (Добавляем Представление) C#

В предыдущей публикации мы создали простейший ASP.NET MVC проект на .NET Core и добавили в него контроллер. Весь проект состоял из 4 файлов и содержал только самое необходимое. Теперь мы добавим в этот проект представления.
Скачать исходник предыдущего проекта можно здесь: 
Скачать файл: sample001s.zip [2 Kb] (cкачиваний: 16)  

Приступим. Для начала добавим в наш проект каталог «View» (именно так принято именовать папку содержащую представления) в котором будут лежать все наши представления. Затем в каталоге «View» создадим подкаталог «SayHello» — в нем будут лежать представления для контроллера SayHello.
Создадим представление для Экшена Hello. Для этого в каталоге «SayHello» создадим файл «Hello.cshtml» с содержимым:

@{
    ViewData["Title"] = "Привет из представления";
}

<h2>HELLO !!!</h2>

<p>Привет из представления!</p>
Подробнее

ASP.NET MVC проект на .NET Core в VS Code. Часть 1 (Создаем проект и Добавляем Контроллер) C#

В этой публикации я надеюсь начать цикл повествований по разработке ASP.NET MVC приложения на .NET Core без использования Visual Studio. Для разработки приложения я буду использовать VS Code (по сути навороченный текстовый редактор), и больше ничего.

Начну я с создания пустого проекта и последовательного добавления в проект Контроллера, Представления и Модели, с постепенным включением в проект необходимых библиотек.

Поскольку сам я это делаю впервые, то могу местами ошибаться или нести какую нибудь «чушь» :), поэтому заранее приношу извинения за возможно не «кошерный» код или некорректное описание чего либо. Обещать могу лишь одно, приведенные примеры гарантированно работоспособны.

Итак Начнем. Первая публикация будет посвящена созданию ASP.NET Core MVC проекта и добавлению в него Контроллера.

Для начала, если вы этого ещё не сделали, установите .NET Core SDK и (если не хотите писать в блокноте) Visual Studio Code, всё это добро можно взять здесь: .NET Core SDK & Visual Studio Code. Платформу выбирать вам, у меня на Windows.

Подробнее

Создаем первый Web сайт с ноля на .NET Core C#

1. Устанавливаем .NET Core.

2. Создаем новый проект .NET Core

mkdir Sample01
cd Sample01
dotnet new


После выполнения этих команд в папке Sample01 появится 2 файла: «Program.cs», «project.json».
Это и есть простейший шаблон приложения на .NET Core.

Подробнее

Пример POST запроса через WebRequest C#

Пример POST запроса к сервису с использованием WebRequest на C#:

using System;
using System.Net;
using System.IO;

namespace Tester
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("RUN Tests for Service:");

            //Выполняем тестовый POST запрос к службе.               
            SendTestPostRequest(@"URL - сервиса", "Текст запроса");

            Console.WriteLine("Press any key for exit...");
            Console.ReadKey();
        }

        //Метод выполяющий запрос по указанному адресу и получающий ответ.
        static void SendTestPostRequest(string url, string data)
        {
            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method = "POST";
                string postData = data;
                request.ContentType = "application/x-www-form-urlencoded";
                System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
                byte[] postByteArray = encoding.GetBytes(postData);
                request.ContentLength = postByteArray.Length;

                System.IO.Stream postStream = request.GetRequestStream();
                postStream.Write(postByteArray, 0, postByteArray.Length);
                postStream.Close();
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();
                Console.WriteLine("Response Status Description: " + response.StatusDescription);
                Stream dataSteam = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataSteam);
                string responseFromServer = reader.ReadToEnd();
                Console.WriteLine("Response: " + responseFromServer);
                reader.Close();
                dataSteam.Close();
                response.Close();
            }
            catch(Exception ex)
            {
                //Если что-то пошло не так, выводим ошибочку о том, что же пошло не так.
                Console.WriteLine("ERROR: "+ex.Message);
            }
        }

    }
}
Подробнее

Получаем программно серийный номер на ТСД Cipher 9300 C#

 У терминалов сбора данных Cipher с Windows CE — есть одна особенность, в отличие от всех других ТСД (во всяком случае Motorola(Symbol) и Datalogic) стандартными способами получить серийный номер не получится. Получить то он получится — но будет на всех устройствах одинаковый, что лично меня не устраивает. 

Однако этот глюк можно обойти и получить серийный номер при помощи API с библиотекой SystemApi_Ce_Net.DLL которая поставляется на диске с терминалом.

Ниже маленький примерчик кода — как это сделать:

using Cipherlab.SystemAPI;


int err = 0;

DataType.DataStruct.SYSINFO sysinfo = new DataType.DataStruct.SYSINFO();
            
err = SystemAPI.Function.GetSysInfo(ref sysinfo);

string serial = Encoding.UTF8.GetString(sysinfo.SerialNum,0,sysinfo.SerialNum.Length);


Полагаю комментарии излишни, и так всё достаточно просто и понятно.

Подробнее