Jestem nowym użytkownikiem OpenCV i chcę wybrać konkretny region wideo/obrazu do wykrycia. W moim przypadku chcę wykryć samochody, które są tylko w drodze, a nie na parkingu.Wybór regionu OpenCV
Odpowiedz
Cóż, wybór samochodów wymaga użycia danych treningowych. Ale aby wybrać ROI (obszar zainteresowania) jest dość prosta:
Rozważmy img = cv2.imread(image)
W takim przypadku, gdzieś w kodzie, można określić region ten sposób:
sub_image = img[y:y+h, x:x+w]
które będą uzyskaj zwrot z inwestycji po określeniu wartości, oczywiście bez użycia "x" lub "y", gdzie h oznacza wysokość, a w oznacza szerokość. Pamiętaj, że obrazy są tylko matrycami 2D.
Użyj CascadeClassifier()
, aby wybrać samochód (y) z obrazu (ów). Znaleziono dokumentację: here. OpenCV zawiera dane treningowe, których możesz użyć do tworzenia klasyfikacji w postaci plików XML.
Jeśli chcesz ręcznie wybrać region zainteresowania (ROI), aby wykonać na nim jakieś przetwarzanie, możesz spróbować użyć zdarzenia kliknięcia myszą, aby wybrać punkty początkowe i końcowe swojego zwrotu z inwestycji.
Po uruchomieniu i zatrzymaniu można go użyć do pobrania obrazu z wybranego regionu.
Można to zrobić na obrazie lub przechwycić klatkę wideo.
bool roi_captured = false;
Point pt1, pt2;
Mat cap_img;
//Callback for mousclick event, the x-y coordinate of mouse button-up and button-down
//are stored in two points pt1, pt2.
void mouse_click(int event, int x, int y, int flags, void *param)
{
switch(event)
{
case CV_EVENT_LBUTTONDOWN:
{
std::cout<<"Mouse Pressed"<<std::endl;
if(!roi_capture)
{
pt1.x = x;
pt1.y = y;
}
else
{
std::cout<<"ROI Already Acquired"<<std::endl;
}
break;
}
case CV_EVENT_LBUTTONUP:
{
if(!got_roi)
{
Mat cl;
std::cout<<"Mouse LBUTTON Released"<<std::endl;
pt2.x = x;
pt2.y = y;
cl = cap_img.clone();
Mat roi(cl, Rect(pt1, pt2));
Mat prev_imgT = roi.clone();
std::cout<<"PT1"<<pt1.x<<", "<<pt1.y<<std::endl;
std::cout<<"PT2"<<pt2.x<<","<<pt2.y<<std::endl;
imshow("Clone",cl);
got_roi = true;
}
else
{
std::cout<<"ROI Already Acquired"<<std::endl;
}
break;
}
}
}
//In main open video and wait for roi event to complete by the use.
// You capture roi in pt1 and pt2 you can use the same coordinates for processing // //subsequent frame
int main(int argc, char *argv[])
{
int frame_num = 0;
int non_decode_frame =0;
int count = 1, idx =0;
int frame_pos =0;
std::cout<<"Video File "<<argv[1]<<std::endl;
cv::VideoCapture input_video(argv[1]);
namedWindow("My_Win",1);
cvSetMouseCallback("My_Win", mouse_click, 0);
sleep(1);
while(input_video.grab())
{
cap_img.release();
if(input_video.retrieve(cap_img))
{
imshow("My_Win", cap_img);
if(!got_roi)
{
//Wait here till user select the desire ROI
waitKey(0);
}
else
{
std::cout<<"Got ROI disp prev and curr image"<<std::endl;
std::cout<<"PT1"<<pt1.x<<" "<<pt1.y<<std::endl;
std::cout<<"PT2"<<pt2.x<<" "<<pt2.y<<std::endl;
Mat curr_img_t1;
Mat roi2(cap_img,Rect(pt1, pt2));
Mat curr_imgT = roi2.clone();
cvtColor(curr_imgT, curr_img_t1, CV_RGB2GRAY);
imshow("curr_img", curr_img);
// Do remaining processing here on capture roi for every frame
waitKey(1);
}
}
}
}
- 1. Zrozumienie interesującego regionu w openCV 2.4
- 2. Działania Sikuli wewnątrz regionu
- 3. UIImage z regionu UIView
- 4. kolory regionu jvectormap
- 5. Znaki indeksu specyficzne dla regionu
- 6. Pierwsze regionu użytkownika z navigator.language
- 7. Wybór parametrów w adaboost
- 8. Nieznany pseudoelement lub pseudo-klasa :: wybór [wybór]
- 9. Wybór aktora
- 10. Sprawdzaj datę w zależności od regionu
- 11. Algorytm szukania namalowanego regionu na płótnie
- 12. Jak dodać klasę do regionu Drupal 7?
- 13. MKMapView NSInvalidArgumentException Nieprawidłowa awaria regionu w ios6
- 14. Jak wcięcia zawartości regionu za pomocą C#?
- 15. Obcinanie regionu OpenGL 2D nie prostokątne
- 16. Dodaj cień dookoła zamaskowanego regionu CALayera
- 17. Konwencja nazewnictwa dla stanu/regionu/prowincji
- 18. Pobierz strefę czasową według kraju i regionu
- 19. Klasyfikowanie tablicy Pythona według najbliższego regionu "seed"?
- 20. Jak uruchomić kod OpenCV bez OpenCv Manager
- 21. BackgroundSubtractorMOG2 & OpenCV
- 22. Wybór tekstu z JLabel?
- 23. System.Speech.Recognition Wybór profilu rozpoznawania
- 24. Grupowanie wybór wizualny VIM
- 25. Co robi pusty wybór?
- 26. Usuwanie UITableViewCell Wybór
- 27. DataGrid traci wybór
- 28. Warunkowy wybór między datami
- 29. Clear SingleChoice ListView Wybór
- 30. Wybór frameworków testowania iOS