Chciałbym pobierać obrazki z kam internetowej i zapisywac na dysku jęsli tylko różnice zdjecia obecnego i poprzedniego są większe niż określony próg
Nie wiem jak zapisać każdy obraz z kamery do osobnego obiektu i obsługiwac je w osobnych wątkach?
Chciałbym pobierać obrazki z kam internetowej i zapisywac na dysku jęsli tylko różnice zdjecia obecnego i poprzedniego są większe niż określony próg
Nie wiem jak zapisać każdy obraz z kamery do osobnego obiektu i obsługiwac je w osobnych wątkach?
Chciałbym pobierać obrazki z kam internetowej i zapisywac na dysku jęsli tylko różnice zdjecia obecnego i poprzedniego są większe niż określony próg
Nie wiem jak zapisać każdy obraz z kamery do osobnego obiektu i obsługiwac je w osobnych wątkach?
To jest jakas appka webowa ? wielu userow, wiele kamer na raz ? bo jak jestes jedna kamera to gdzie ty tu widzisz problem ?
nie odpowiadaj w komentarzach ... chcesz porownywać obraz z wielu kamer (a, b, c, d) z jakims (jednym) zdjęciem ?
Z każdej kamery pobierany jest zrzut co 10s, i jesli różnica obrazka pobranego jest większa o określony próg od zdjęcia zapisanego poprzednio to zapisuje to zdjęcie również do zadanej ściezki a jesli mniejsza to nie zapisuje. Do każdej kamery osobno, zapis jest w róznych folderach
Czyli nie ma żadnego problemu z jakimś udostępnianiem danych między wątkami. Jaki masz w takimi razie problem ? czego nie wiesz ?
Jak już pisałem dopiero sie ucze ...
Nie wiem jak zapisać każdy obraz z kamery do osobnego obiektu i obsługiwac je w osobnych wątkach?
Jedną z opcji może być rozszerzenie klasy Camera, aby można było dla każdego obiektu tego typu ustawić skąd ma pobierać obraz (z której kamery).
Następnie tworzysz 4 obiekty tej klasy, każdemu ustawiasz źródło obrazu i odpalasz. Coś w tym stylu:
void main(...) {
Camera cam1 = new Camera();
cam1.setSource(/*tu podajemy info skąd ma brać obraz*/);
Camera cam2 = new Camera();
cam2.setSource(/*tu podajemy info skąd ma brać obraz*/);
Camera cam3 = new Camera();
cam3.setSource(/*tu podajemy info skąd ma brać obraz*/);
Camera cam4 = new Camera();
cam4.setSource(/*tu podajemy info skąd ma brać obraz*/);
cam1.start();
cam2.start();
cam3.start();
cam4.start();
To tylko idea. Przy większej ilości obiektów Camera można je trzymać w jakimś kontenerze.
Można też rozdzielić wątki pobierające obrazy z kamery i te analizujące i zapisujące każdy obraz.
W moim przykładzie stworzone są 4 obiekty w metodzie main(). Ty zrobiłeś to w run(). Czyli w każdym przebiegu pętli w metodzie run tworzysz nowy wątek. Moją propozycją było utworzenie 4 obiektów Camera w main(). Metodę run() zmieniłbym tak, aby każda pobierała plik z jednego źródła co dany odstęp czasu, analizowała obraz i go zapisywała. Wtedy nie tworzysz nowych wątków tylko jeden wątek jest odpowiedzialny za pracę z jednym źródłem.
Jak porównać dwa obrazy za pomoca funkcji :
boolean bufferedImagesEqual(BufferedImage img1, BufferedImage img2)
tzn. miałbym utworzyć przykładowo dla 3 obiektów 3 metody run
Nie. Robisz np. tak (pisane bez IDE, więc pewnie się nie kompiluje, ale chodzi o ideę):
class Camera extends Thread {
private String source;
private boolean isRunning = true;
public Camera( String source) {
this.source = source;
}
public void stop() {
isRunning = false;
}
public void run() {
while(isRunning) {
//pobranie obrazka ze ścieżki podanej w "source"
//porównianie go z poprzednim
//ewentualne zapisanie obrazka
}
public static void Main() {
Camera cam1 = new Camera("http://kamery.topr.pl/moko/moko_01.jpg");
Camera cam2 = new Camera("http://kamery.topr.pl/moko_TPN/moko_02.jpg");
Camera cam3 = new Camera("http://kamery.topr.pl/stawy2/stawy2.jpg");
cam1.start();
cam2.start();
cam3.start();
//tu czekamy na np. naciśnięcie Enter, żeby zakończyć program
cam1.stop();
cam2.stop();
cam3.stop();
cam1.join();
cam2.join();
cam3.join();
} //end of class Camera
Jak porównać dwa obrazy za pomoca funkcji
Nie mam pojęcia. Nigdy nie bawiłem się w porównywanie obrazów, ale przypuszczam, że cywilacja znalazła już i na to sposób :) Uncle G pewnie pomoże.