распознавание изображений Python [закрывается]

простой пример c ++ (найден после поиска на нескольких сайтах)

#include <bits/stdc++.h>
#include <cassert>
#include <exception>
#include <iostream>

int main (const int argc, const char **argv) {
try {
    assert (argc == 2);
    const std::string filename = (const std::string) argv [1];
    const std::string begin = "g++-7 " + filename;
    const std::string end = " -Wall -Werror -Wfatal-errors -O3 -std=c++14 -o a.elf -L/usr/lib/x86_64-linux-gnu";
    const std::string command = begin + end;
    std::cout << "Compiling file using " << command << '\n';

    assert (std::system ((const char *) command.c_str ()) == 0);
    std::cout << "Running file a.elf" << '\n';
    assert (std::system ((const char *) "./a.elf") == 0);

    return 0; }
catch (std::exception const& e) { std::cerr << e.what () << '\n'; std::terminate (); }
catch (...) { std::cerr << "Found an unknown exception." << '\n'; std::terminate (); } }
36
задан panchicore 21 October 2009 в 21:21
поделиться

4 ответа

Типичная цепочка инструментов Python будет выглядеть следующим образом:

Что касается различения форм , я бы получил его силуэт, глядя на форму фона. Затем я бы определил количество углов, используя алгоритм определения углов (например, Харрис). У треугольника 3 угла, у квадрата 4, а у смайлика нет. Вот реализация python определения угла Харриса с помощью Scipy .

Изменить:

Как вы упомянули в комментариях, сообщение в блоге не представляло функцию, которая производит гауссовское ядро, необходимое в алгоритм. Вот пример такой функции из Scipy Cookbook (отличный ресурс, кстати):

def gauss_kern(size, sizey=None):
    """ Returns a normalized 2D gauss kernel array for convolutions """
        size = int(size)
        if not sizey:
            sizey = size
        else:
            sizey = int(sizey)
        x, y = mgrid[-size:size+1, -sizey:sizey+1]
        g = exp(-(x**2/float(size)+y**2/float(sizey)))
        return g / g.sum()
32
ответ дан 27 November 2019 в 06:08
поделиться

OpenCV имеет инструменты анализа blob, это предоставит вам показатели формы, которые вы можете использовать для своего любимого алгоритма распознавания образов :) Например. прямоугольник имеет отношение площади к площади / (высоте * ширины) 1,0, тогда как отношение круга составляет около 0,78.

10
ответ дан 27 November 2019 в 06:08
поделиться

Если вы знаете пространство состояний ваших данных, вы можете использовать анализ основных компонентов. В PCA все объекты должны быть размещены (в центре экрана). PCA не выполняет обнаружение, но разделяет объекты на уникальные слои, в которых вы можете идентифицировать их как треугольник и т. Д. Также обратите внимание: это не инвариантный масштаб или вращение.

[Я не могу вспомнить, как называется эта техника, но она похожа на то, как почтовое отделение делает рукописный ввод] Если вы можете обрабатывать только неизогнутые криволинейные поверхности, вы можете выполнить обнаружение краев, а затем выполнить выборку на пересечениях, чтобы получить приблизительное сходство.

2
ответ дан 27 November 2019 в 06:08
поделиться

Вы указываете геометрическую фигуру 50x50 пикселей. Если размер и ориентация геометрических фигур фиксированы , у вас есть классическая задача сопоставления шаблонов , подходящая для метода корреляции . Вы можете применить сопоставление с шаблоном к исходному изображению или к выходному сигналу обнаружения границ.

В противном случае, если размер (масштаб) и / или ориентация являются произвольными, могут применяться дескрипторы Фурье . Эти дескрипторы являются инвариантами вращения и масштабирования.

Все эти методы могут быть закодированы с использованием OpenCV, NumPy или SciPy.

3
ответ дан 27 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: