Program przetwarzający obraz w tle

0

Witajcie!

To mój pierwszy post tutaj :)
Moje pytanie brzmi: W jakim języku oraz w jaki sposób w ogóle szukać informacji na temat stworzenia programu, który po włączeniu będzie generował ramkę w kształcie kwadratu i przechwytywał obraz w tle z tego kwadratu (z tego co robi się aktualnie na komputerze) a następnie analizował co jest na tym obrazie np. zliczał kwadraty albo analizował gdzie jaki obiekt się znajduje. Potrzebuje tego do zczytywania rozgrywki szachowej i zapisywanie poszczególnych figur na polach w formacie FEN (Notacja Forsytha-Edwardsa). Za każdą informację bardzo dziękuję! :)

1

W jakim języku [...] szukać informacji na temat stworzenia programu [...]

Aż kusi, żeby odpisać "w j. angielskim" ;)
A tak serio, to co prawda język tutaj ma mniejsze znaczenie, ważniejsze będzie znalezienie biblioteki/algorytmu do szukania obiektów, ale moim zdaniem C++ byłby dobrym wyborem bo jednak sporo osób bawi się za jego pomocą w podobne rzeczy. A co do analizowania obrazu to ważne pytanie jest takie czy figury mają zawsze jednakowy wygląd, jak duży obszar to będzie (fullscreen, małe okno?) i też jak dynamicznie zmienia się pozycja (tak, wiem - szachy, ale nikt nie mówił, że to gra na żywo, może być też jakiś przyspieszony zapis rozgrywki ;) ) bo od tego wszystkiego zależy jak optymalnej metody trzeba szukać. Przy stałym wyglądzie obiektów, małym oknie i wolnej rozgrywce nawet naiwny algorytm pewnie by spokojnie działał.

Ale z twojego pytania wnioskuję, że nie masz doświadczenia w programowaniu więc nie wiem czy jest to dobry pomysł, żeby się za coś takiego brać. I jeszcze pytanie czy nie ma innego sposobu zapisu rozgrywki, jeśli to partia w jakimś programie to może zapisuje ją w swoim formacie i wystarczy konwerter?

Się rozpisałem, ale poczekaj jeszcze na odp. kogoś bardziej ogarniętego w temacie :)

0

Za trudne rzeczy na poczatek. Pytanie jest czy tylko potrzebujesz tego programu czy on jest przy okazaji nauki programowania? Musisz albo komus zlecic tego typu program albo zaczac nauke od innych rzeczy. Odpowiadajac na twoje pytanie masz spory wybor, moze to byc np C++, Delphi itd.

0

Zgadzam się, z @mar-ek1, wygląda na to, że nie masz jeszcze odpowiedniego poziomu umiejętności na taki program.
Wybór języka jest tu najmniejszy problemem (spokojnie można to zrobić, w C++, Pythonie, C#, Java, ...).

0

Cześć, zapoznaj się z biblioteką OpenCV, http://opencv.org/ a tutaj masz tutorial do wykrywania kształtów http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/ co do języka, tak jak przedmówcy wspomnieli może to być C++,C#,Java itp. ale z tego co się orientuje to dużo kodu pisane jest w C++.

0

Cieszę się, że odpisujecie (myślałem, że temat się zakopie..)!

Myślałem o czymś takim, żeby program robił okrojony screen do wybranego kwadratu, a następnie porównywał szachownice wraz z figurami (figury na planszy byłyby zawsze takie same - bez żadnych animacji tj.: ruch przeciwnika, następnie stały wygląd szachownicy z takimi samymi pionami). Screeny by się po prostu odświeżały co np. sekundę i analizowały rozkład na szachownicy.

Partia jest online - niestety nie wiem gdzie miałoby się to zapisywać..

Nie chcę nikomu tego zlecać. Chciałbym dowiedzieć się w jaki sposób takie rzeczy się tworzy, bo zawsze mnie to interesowało. Być może faktycznie jest to za trudne "na początek", ale to jest moim celem.

Mogę to zrobić w: C++, Pythonie, C#, Java, Delphi - dzięki za te odpowiedzi! Czy jest to możliwe także w Ruby? Ten język mnie na tę chwilę najbardziej interesuje :)

Googlując znalazłem właśnie coś o OpenCV, ale nie wgłębiałem się jeszcze w to, bo wolałem zaczekać na odpowiedzi od Was :) Było tam coś o progowaniu i konturowaniu..

Dzięki za pomoc! Spoko Forum :D

0

@hubert_ruby Takie cuda w każdym języku da się napisać. To że np. nie ma w danym jakiejś biblioteki do tego, to nie problem, napisać i już:P Ponieważ manipulujesz obrazem, a co za tym idzie zabawa z kartą graficzną C/C++ pewnie najlepszym wyborem.

Teraz moja rada, jeśli nic wcześniej nie pisałeś(niekoniecznie w c/c++), albo masz <200h to odpuść. Popisz w języku, napisz proste aplikacje(snake, kółko i krzyżyk, Bankomat) jeśli napiszesz je 'od ręki", śmiało przystąp do OpenCV. Nie ma sensu byś skakał wyżej niż masz tyłek. Zniechęcisz się albo zaczniesz irytować na forum źle sformatowanym kodem lub będziesz pytać o podstawy.

BTW. jak twój angielski(tzn. nie pytam o skill nawet, ale o to czy umiesz słownika użyć? Bo tutki są po ang w większości i ważna jest też umiejętność korzystania ze słownika by nie płakać na forum często).

I jeśli chcesz to odświeżać co sekundę to jeszcze przyda ci się wiedza z sieci i systemów, bo to na większą skale po prostu nie może się udać.

0

"To że np. nie ma w danym jakiejś biblioteki do tego, to nie problem, napisać i już:P" - to brzmi jakby to było bardzo trudne do zrealizowania.. :D
"a co za tym idzie zabawa z kartą graficzną C/C++ pewnie najlepszym wyborem." - Dzięki między innymi na takie konkrety liczyłem. Kiedyś miałem styczność z Delphi, a na studiach jakieś podstawy C.
"albo masz <200h" - domyślam się, że chodzi o ilość spędzonych godzin przy programowaniu? a liczy się łącznie z siedzeniem na codecademy.com? :P JS, JQuery, PHP itd.

Angielski znam dobrze, przekonałem się niedawno będąc trochę w Anglii :) Wolę korzystać z angielskich tutoriali itd., ale zapytałem na polskim forum, bo przecież Polacy to jedni z najlepszych programistów na świecie tak? :)

Dzięki za wszystkie informacje. Temat można zamknąć, bo się dowiedziałem co chciałem.
Pozdrawiam Forumowiczów!

0
Dregorio napisał(a):

Ponieważ manipulujesz obrazem, a co za tym idzie zabawa z kartą graficzną C/C++ pewnie najlepszym wyborem.

Nie ma znaczenia czy C/C++ czy Delphi. Tam nie bedzie zabawy z karta graficzna. Zwykle winapi do przechwycenia obrazu a nastepnie obrobka. Malo tego, mysle ze w Delphi bedzie nawet wygodniej to zrobic. Wydajnosc bedzie porownywalna. Zreszta to tylko jedna klatka wiec nie ma co patrzec na wydajnosc.

0

Moim zdaniem lepiej byłoby podsłuchać ruch sieciowy, lub sczytywać z pamięci gry odpowiednie fragmenty. W ten sposób nie trzeba mieć okna gry na wierzchu i jest to wiele bardziej wydajne od prymitywnego pomysłu robienia screenów. Wszystko zależy od samej gry - co będzie łatwiejsze. Jeśli chodzi o trudność w implementacji to wszystkie wymienione techniki IMHO stoją na takim samym poziomie skomplikowania i sprowadzają się do wyboru odpowiedniej biblioteki, język też za dużego znaczenia nie ma.

0

@mca64 nie ograniczaj chlopaka. Manipulacja obrazu to i karta graficzna za chwile. A wskaźniki w tym pomogą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1