а если ты про то как иначе искать на картинке, то там делается в полном непрерывном пространстве с ключевыми точками, тоесть идет обрасть x/y от 0 до 1, ключевые пиксели равномерно распределяются как граф по ней и идет поиск по графу, а при отрисовке просто между ними нужная интерполяция
выглядит это всё как-то так:
т.е. видишь, у каждого узла по 4 связи, кроме крайних, вся идея в том чтобы выделить нужные подграфы и с ними работать по всеизвестным алгоритмам поиска пути и тому подобное. Например, выделить тот же лист бумаги, бахнуть по нему оптимизацией (в идеале должен получиться граф, где узлы - углы листа и карандаша итп) и работать только с ним, без всяких черных масок и пробегов по всей матрице
alexprey, у меня есть собственная капча распознавалка - распознает любые символы по заданной нестрогой маске =) мб прикрутить... хотя на плюсах, но в роли отдельной dll сишной библиотеки:
header
#ifndef CR_LIBRARY_ADAPTER_H
#define CR_LIBRARY_ADAPTER_H
// CR DLL-functions adapter
#include "CR.h"
#include "CRAlgorithmTest1.h"
#define crDLLEXPORT __declspec(dllexport)
class CRLibraryAdapter {
public:
static void Start(sc::COLORMATRIX mx, size_t w, size_t h, sc::COLORMATRIX advancedMx,
sc::COLORMATRIX maskSeq, size_t maskW, size_t maskH);
/// Starts recognition process. Takes the pixel map as COLORMATRIX, width, height,
/// and the previous (advanced) color map from series (optional, =NULL if isn't used).
/// Width/Height of advancedMx is the same as in the first one.
/// maskSeq - matrix of the image which is represented as a vertical sequence of monospaced parts(mask);
/// The mask is used as forms of digits to compare with digits on the target image.
/// If arguments are wrong, GetResult will return ST_ERROR.
static void Stop();
/// Stops the process. Use GetState() func to see results.
static cr::StateType GetState();
/// Returns the current state of the CR from the StateType enum.
/// Before first start returns ST_READY.
static float GetStateProgress();
/// Returns the progress of the current state as an absolute number (from 0.0 to 1.0).
static bool GetResult(char * resultBuffer, size_t maxCount);
/// Gets the captcha recognition result as ascii string. Example: "1234".
/// If there is the bad argument, the function will return false.
static bool GetIntermediatePic(sc::COLORMATRIX picBuffer, size_t * widthBuff, size_t * heightBuff);
/// Gets the process intermediate picture for visual indication of progress.
/// widthBuff and heightBuff might be equal to NULL, it means that function will use the source size.
/// If the function fails, the return value is false.
private:
CRLibraryAdapter() {}; // cannot create object
};
// Export functions
extern "C" {
crDLLEXPORT void Start(unsigned int* mx,size_t w, size_t h,unsigned int* advMx,unsigned int*mask,size_t mw, size_t mh) { CRLibraryAdapter::Start(mx,w,h,advMx,mask,mw,mh); }
crDLLEXPORT void Stop() { CRLibraryAdapter::Stop(); }
crDLLEXPORT int GetState() { return CRLibraryAdapter::GetState(); }
crDLLEXPORT float GetStateProgress() { return CRLibraryAdapter::GetStateProgress(); }
crDLLEXPORT bool GetResult(char* buf,size_t max) { return CRLibraryAdapter::GetResult(buf,max); }
crDLLEXPORT bool GetIntermediatePic(unsigned int* buf,size_t* w,size_t* h) { return CRLibraryAdapter::GetIntermediatePic(buf,w,h); }
}
cr::CRAlgorithmTest1 crAlgorithmObject;
cr::CR crInstance(crAlgorithmObject); // Captcha Recognizer global object
#endif
Могу помочь с сервером (для тестов), там несильная машинка ддр2 и маленький трафик, зато доступ могу выдавать как кто захочет, т.к. комп стоит у меня дома + выделить домен и 24/7 очевидно. Кароче, трафик чисто для тестов (крому стресс/нагрузочных). Если надо - пишите =) с серьёзным сервером вам самим надо будет искать датацентр с виртуалкой
» Он вам не клоун! / Новый формат блога
» WarCraft 3 / Пак сундуков
» Он вам не клоун! / Творческий кризис
» Minecraft / Misa's Realistic Texture Pack
» Он вам не клоун! / Пост порицания
» Он вам не клоун! / Творческий кризис
раиваю» Он вам не клоун! / Пост порицания
» Он вам не клоун! / Пост порицания
Так ты в каком классе?
» Он вам не клоун! / Пост порицания
» В гостях у Эльрата / Джентльменский набор юного моделлера
» Он вам не клоун! / Пост порицания
» В гостях у Эльрата / Джентльменский набор юного моделлера
» Блог им. AlexPrey'я / Еще немного баловства с камерой
Ну, кому фан, а кому смысл жизни.
» Блог им. AlexPrey'я / Еще немного баловства с камерой
Ред. ScorpioT1000
» Блог им. AlexPrey'я / Балуемся с камерой
выглядит это всё как-то так:
Ред. ScorpioT1000
» Блог им. AlexPrey'я / Балуемся с камерой
» Блог им. AlexPrey'я / Балуемся с камерой
Давно хотел этим заняться, и наверно, займусь когда-нибудь
Ред. ScorpioT1000
» Battle Mages / Срочный набор в команду!
» StarCraft 2 / Ветер на холмах
надо было минералы скрыть за кучей деревьев итп, чтобы выглядело будто это реально зарождения какието.
в целом "еще одна дефолтная карта" =(
» Администрация XGM / Minecraft сервер XGMa
» StarCraft 2 / Обновление 1.5.0