Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Редуциране на матрица за оформяне на цифра

Featured Replies

Колеги, имам една матрица оформяща цифрата 6. Как мога да създам функция, която да остави само контура на цифрата а пълнежа от цветове да се премахне? Идеята ми е просто да очертая цифратаи да премахна ненужното. Ето матрицата и кода с който я извеждам:

Тук е демо:
http://ideone.com/ml62HJ

Кода:

$matrix = array(
    5 => array(
        7 => "      ",
        8 => "      ",
        9 => "f0f0f0",
        10 => "f0f0f0",
        11 => "f0f0f0",
        12 => "f0f0f0",
        13 => "      ",
        14 => "      ",
    ),
    6 => array(
        7 => "      ",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "f0f0f0",
        11 => "f0f0f0",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "e0e0e0",
    ),
    7 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "f0f0f0",
    ),
    8 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "      ",
        13 => "      ",
        14 => "      ",
    ),
    9 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "      ",
        13 => "      ",
        14 => "      ",
    ),
    10 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "f0f0f0",
        11 => "f0f0f0",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "      ",
    ),
    11 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "e0e0e0",
        10 => "f0f0f0",
        11 => "f0f0f0",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "f0f0f0",
    ),
    12 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "e0e0e0",
    ),
    13 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "f0f0f0",
    ),
    14 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "f0f0f0",
    ),
    15 => array(
        7 => "f0f0f0",
        8 => "f0f0f0",
        9 => "f0f0f0",
        10 => "      ",
        11 => "      ",
        12 => "f0f0f0",
        13 => "f0f0f0",
        14 => "f0f0f0",
    ),
    16 => array(
        7 => "e0e0e0",
        8 => "f0f0f0",
        9 => "e0e0e0",
        10 => "f0f0f0",
        11 => "f0f0f0",
        12 => "e0e0e0",
        13 => "f0f0f0",
        14 => "e0e0e0",
    ),
    17 => array(
        7 => "      ",
        8 => "      ",
        9 => "f0f0f0",
        10 => "f0f0f0",
        11 => "e0e0e0",
        12 => "f0f0f0",
        13 => "      ",
        14 => "      ",
    ),
);
print '<pre>';
foreach ($matrix as $y => $row) {
    print '<br>';
    foreach ($row as $x => $column) {
        print $column;
    }
}


Идеята ми е да останат само крайните пиксели от матрицата, очертаващи контура на цифрата 6 и да се получи примерно нещо подобно на тази единица:
1410244160_1.jpg
Пълнежа в контура просто да се премахне.


Странично от темата търся и начин да намаля така редовете, че да се изписва цифрата с една линия тоест по ред и колона вместо с всичките пиксели, което е и по-трудният варянт.

Аз нещо не схванах изобщо идеята ... искаш от реална снимка да премахваш цветове и да оставяш контури?

Или искаш от това което си направил да го представиш по този начин ...

Ако е второто така на първо четене ми се вижда най-лесно да си направиш една матрица (масив) пълен с празни елементи (примерно 0) и да си направиш няколко функции който да ти "чертаят" по нея. Примерно виж API-то на Canvas за да придобиеш идея какво имам в предвид.

http://www.w3schools.com/tags/canvas_lineto.asp

Редактирано от borovaka (преглед на промените)

  • Автор

Снимката е просто за да покажа за какво иде реч и какво искам да направя. Кода съм го дал и искам да редуцирам броят на пикселите като оставя само контурите в резултата получен на циклите долу.

http://ideone.com/ml62HJ

Какви пиксели бе човек? 
Това което си дал са символи. Целта ти е правиш програмка за ASCII драскане ли? Или реално да работиш със някоя снимка, като по снимката премахваш пиксели.

Ако е за драскане със символи не мога да разбера какво искаш да премахнеш точно? Ако искаш да имаш празен символ в масива, както си го описал просто сложи един space :)

Иначе, ти предложих друг вариант да си направиш някакви методи за работа със символите. Примерно имаш двумерен масив (матрица) 8х8. Правиш си функция, която да ти драска линия по зададени координати, примерно drawLine(0,0,0,8) - като това ще ти запълни [0][0] до [0][8] с някакъв символ, който ти изразява линия. Може и да направиш и drawLine да ти взема два обекта, които са презентация на точки.

Та след като имаш функция дето ти чертае линия, много лесно можеш да си направиш и функция, която ти чертае правоъгълник (запълнен/незапълнен) и т.н.

Ти какво по-точно питаш? Как да извъртиш циклите, че да се получи ли?

  • Автор

Колега, ти четеш ли ми първият пост или не? Питам как да редуцирам масива със кодове на цветове в шестнадесетична бройна система (http://itschool.bg/tutorials/article/1277/). Щом работя с масив, значи снимка не се ползва и няма да чертая линии по нея. Матрицата има кординати по ред и колона отговарящи на реална снимка, но не работя с нея а с масив от цветовете и. Та това е за една OCR система, преправям я за да работя с по-голям брой изображения, на които взимам цветовете на пикселите по кординати и си изграждам масив който си обработвам, а изображението не го закачам. Та нужно ми е да намеря крайните пиксели (цветове F0F0F0 примерно) за да очертая само контура (бордъра) на линията, а не да режа матрицата. Просто ще заменя на пикселите които са заобиколени по кординати с 8 пиксела пълни с цветове. Пуснал съм тема и в друг форум: http://web-tourist.net/forum/viewtopic.php?t=128942&start=0 (не е реклама) и ако те интересува какво сме обсъждали там прочети за повече разяснение по темата.      

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.