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

może ktoś mi przykład pokazać/przytoczyć chodziarz jakiś , ponieważ czytam już 2 tydzień i nic nie mogę sensownego znaleźć odnośnie tego zagadnienia.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.