Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C, Allegro Magiczna różdzka

Ostatnio zmodyfikowano 2010-10-14 22:59
Autor Wiadomość
m_zap
Temat założony przez niniejszego użytkownika
C, Allegro Magiczna różdzka
» 2010-10-14 16:59:51
Panie i Panowie mam problem. Musze wykonać program który z zadanego obrazu wybierze obszar o podobnej kolorystyce. Możecie mi podsunąć jakiś pomysł na ten problem? chodzi mi o samą ideę? Jak już się go wykryje to w jaki sposób zaznaczyć obszar? I mam jeszcze pytanie w jaki sposób mam pobrać z klawiatury jakaś daną od użytkownika? Coś w stylu scanf albo coś w tym stylu?

Pracuję w C z Allegro więc spokojnie mogę jechać piksel po pikselu. Z góry dzięki za odpowiedzi.
P-22785
pekfos
» 2010-10-14 17:30:35
co do drugiego to trzeba sobie samemu napisać (poszukaj "textbox"||"edit" + "allegro" ma wyszukiwarce na stronie), lub użyć allegroGUI.
a podobna kolorystyka.. hmm.. można kombinować z rozbieżnościami w kolorach..
C/C++
int kolor;
int cell;
const int ROZB = 10;
//..
if( getr( cell ) > getr( kolor ) - ROZB && getr( cell ) < getr( kolor ) + ROZB ) {
    //i tak dla g i b
    //pasuje!!
}

//edit: aa, obszar.. znajdź skrajne punkty i walnij rect na nich(skrajny w lewo,skrajny w górę,skrajny prawo,skrajny w dół) znajdziesz je w jakimś kontenerze w którym będziesz składował współrzędne znalezionych puntów.
C/C++
struct pt {
    int x, y;
};
vector < pt > punkty;
class find {
    int p, l, g, d; //prawo, lewo, góra..
public:
    pt export1(); //jeden skrajny
    pt export2(); //drugi skrajny
    void operator ()( pt & s ) {
        if( s.x < l ) l == s.x;
        else if( s.x > p ) p == s.x;
        else if( s.y < g ) g == s.y;
        else if( s.y > d ) d == s.y;
       
    }
};

// a szukasz tak:
find ff;
for_each( punkty.begin(), punkty.end(), ff );
//a rysujesz tak:
pt a = find.export1(), b = find.export2();
rect( bufor, a.x, a.y, b.x, b.y, ~kolor ); //zanegowany bitowo kolor(przeciwny by sie nie zlewał)
 
//edit: funkcje export# napisz se sam. wiadomo jak (góra z lewym, dół z prawym)
P-22786
m_zap
Temat założony przez niniejszego użytkownika
» 2010-10-14 17:46:25
no tak ale to będzie regularny kształt ? A mi chodzi o dynamicznie w zaleznosci od wgranego obrazka wykrywało obiekty o podobnym kolorze i je zaznaczało
P-22787
inny1997
» 2010-10-14 18:02:47
jedyny pomysł jaki mam to zapisywanie pikseli o podobnych kolorach a jeżeli zapisane piksele będą naokoło niezapisanych to je też zapisz . później możesz przekopiować prostokąt z obrazu (który wyznaczają najdalsze piksele obiektu) na bitmape, a następnie zamalować piksele nie występujace w spisie pixeli .
P-22788
ison
» 2010-10-14 18:25:07
pewnie jeszcze dzisiaj wrzucę moją bibliotekę do allegro w której znajduje się łatwy w użyciu editbox,button i checkbox (z czasem będzie sporo nowych kontrolek ;P)

do do wykrywania podobnych kolorów to ważne jest czy ty chcesz wykryć na obrazku wszystkie obszary o podobnych kolorach czy tylko zaznaczyć ten obszar tam gdzie użytkownik kliknie myszką?
P-22789
madmike44
» 2010-10-14 19:29:28
Jeśli chodzi o ogólnie pojęte przetwarzanie obrazów i wykrywanie elementów na obrazach, to polecam się zaprzyjaźnić z biblioteką OpenCV - ogromne możliwości, stosunkowo prosta w użyciu no i licencja.... :)
P-22790
m_zap
Temat założony przez niniejszego użytkownika
» 2010-10-14 21:39:13
Jak już wrzucisz biblioteke mogłbys się pochwalic?
P-22793
ison
» 2010-10-14 22:59:51
@m_zap jasne, wszystkie metody związane z kontrolkami dostępnymi będą znajdowały się w dokumentacji, którą właśnie piszę. Zostały mi jeszcze do opisania metody checkbox'a ale nie jest ich dużo (może nawet póki co nie będę tego pisał i wrzucę bez tego) ;) Mile byłaby widziana pomoc ze strony specjalisty w języku ang. aby poprawić wszelkie ewentualne błędy językowe
P-22800
« 1 »
  Strona 1 z 1