Skocz do zawartości

[Programowanie] OpenCV prosty program


sunortas

Pomocna odpowiedź

Witam

Mam problem z Open CV , jestem początkujący i potrzebuje Waszej pomocy.

Ogólnie problem polega na tym iż nie mogę znaleźć informacji jak programować obraz wyświetlony w okienku kamery.

 

#include <opencv\cv.h>
#include <opencv\highgui.h>

using namespace std;
using namespace cv;

int main(){

// pobranie zasobu kamery, parametr mowi o tym ktora kamere wybieramy
// w przypadku gdy w systemie dostepna jest wiecej niz jedna
CvCapture* vid = cvCreateCameraCapture(0);

// tworzymy okno wyswietlajace obraz
cvNamedWindow("plik wideo", CV_WINDOW_AUTOSIZE);

// odczytanie pierwszej klatki - niezbedne do prawidlowego odczytania wlasciwosci pliku
// przy uzyciu funkcji cvGetCaptureProperty
cvQueryFrame(vid);

// ustalamy wartosc fps - najlepiej wieksza niz maksymalna deklarowana przez producenta
// Jezeli wartosc bedzie za mala, obraz bedzie pojawial sie z opoznieniem
double fps =  50;

int odstep_miedzy_klatkami = 1000 / fps;

while (true)
{
// pobranie kolejnej klatki
IplImage* ramka = cvQueryFrame(vid);

// jezeli nie jest pusta to wyswietlamy
if (ramka != 0)
cvShowImage("plik wideo", ramka);
else
break; 
// czekamy przez okreslony czas
int c = cvWaitKey(odstep_miedzy_klatkami);

// jezeli nacisnieto klawisz 'k', konczymy wyswietlanie
if (c == 'k')
break; 
}

// zwolnienie zasobow
cvDestroyAllWindows();
cvReleaseCapture(&vid);
}

mam Obraz i potrzebuje wyznaczyć w nim elementy w których będzie się coś działo .

IMG_5564a2c322b961835.jpg

a potrzebuje wyznaczyć na obrazie takie elementy

IMG_5564a292d55b5891.jpg

.

Jeżeli pojawi się coś w danym kwadracie to chciałbym wysłać portem szeregowym USB cokolwiek na zewnątrz nawet kodem ASCI dowolny znak bądź liczbę w zależności, który w którym kwadracie pojawił się ruch.

Jeżeli ktoś ma jakieś lektury bądź inne materiały to przyjmę wszystko tylko trochę słabo z angielskim jestem w stanie zapłacić za kursy jeżeli ktoś ma dostęp do takich.

Bardzo proszę o pomoc ?

Pozdrawiam

Link do komentarza
Share on other sites

Programuję w Ruby i ten kod mnie nieco zszokował. Bardzo ciężko to się czyta.

Polecam zainteresować się Ruby, jest spooooro przykładów do OpenCV, choćby: https://github.com/ruby-opencv/ruby-opencv/blob/master/examples

#!/usr/bin/env ruby
# face_detect.rb
require "rubygems"
require "opencv"

include OpenCV

window = GUI::Window.new("face detect")
capture = CvCapture.open
detector = CvHaarClassifierCascade::load("./data/haarcascades/haarcascade_frontalface_alt.xml")

loop {
 image = capture.query
 detector.detect_objects(image).each { |rect|
   image.rectangle! rect.top_left, rect.bottom_right, :color => CvColor::Red
 }
 window.show image
 break if GUI::wait_key(100)
}
Link do komentarza
Share on other sites

Programuję w Ruby i ten kod mnie nieco zszokował. Bardzo ciężko to się czyta.

Polecam zainteresować się Ruby, jest spooooro przykładów do OpenCV, choćby: https://github.com/ruby-opencv/ruby-opencv/blob/master/examples

A ja latam do pracy odrzutowcem, jest to bardzo wygodne i szybkie.

Polecam zainteresować się kupnem odrzutowca.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ja sprawdzałbym podobieństwo wybranych obszarów w kolejnych klatkach obrazu. Jeśli wystąpiłyby jakieś różnice to mamy wykryty ruch. Wszystko znajdziesz w dokumentacji od OpenCV.

Ps. jeśli piszesz w C++ to używaj interfejsu dla tego języka, a nie dla C. Jest dużo bardziej przyjemny w obsłudze 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.