Sono nuovo di OpenCV e desidero selezionare una regione particolare nel video/immagine per il rilevamento. Nel mio caso voglio rilevare le auto che sono solo in strada, non nel parcheggio.Selezione di una regione OpenCV
risposta
Bene, la selezione di automobili richiede l'uso di dati di allenamento. Ma per selezionare un ROI (regione di interesse) è abbastanza semplice:
consideri img = cv2.imread(image)
In tal caso, da qualche parte nel codice, è possibile specificare una regione in questo modo:
sub_image = img[y:y+h, x:x+w]
che verrà ottenere la ROI dopo aver specificato i valori, ovviamente, non usando 'x' o 'y', dove h è l'altezza e w è la larghezza. Ricorda che le immagini sono solo matrici 2D.
Utilizzare CascadeClassifier()
per selezionare l'auto o le immagini dalle immagini. La documentazione è trovata here. OpenCV è dotato di dati di addestramento che è possibile utilizzare per creare classificazioni sotto forma di file XML.
Se si desidera selezionare manualmente una regione di interesse (ROI) per eseguire alcune elaborazioni su di esso, è possibile provare a utilizzare l'evento clic del mouse per selezionare i punti di inizio e fine del ROI.
Una volta che hai il punto di partenza e di arresto puoi usarlo per recuperare l'immagine dalla regione selezionata.
L'operazione può essere eseguita su immagine o acquisizione di frame video.
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. Selezione programmatica di una regione
- 2. Regione di interesse opencv python
- 3. NumPy/OpenCV 2: come posso ritagliare una regione non rettangolare?
- 4. Capire la regione di interesse in openCV 2.4
- 5. Emacs: evidenziazione persistente di una regione
- 6. Azioni Sikuli all'interno di una regione
- 7. UIImmagine da una regione di UIView
- 8. come rilevare la regione di un gran numero di pixel bianchi usando opencv?
- 9. protegge una regione con stat_function e ggplot
- 10. ROOT RotatedRect in OpenCV
- 11. OpenCV: inverti una maschera?
- 12. Selezione di una lingua incorporata
- 13. Utilizzare una notazione regione differente rispetto alla notazione regione del sistema
- 14. Nucleo di monitoraggio regione Località
- 15. trama piccola regione di una grande mappa poligonale in ggplot2
- 16. Loop nel diagramma di attività UML utilizzando una regione
- 17. domanda per principianti emacs - come cercare all'interno di una regione
- 18. come eliminare una regione di testo in emacs?
- 19. Quali sono i secondi momenti di una regione?
- 20. Prisma WPF come avere viste duplicate all'interno di una regione
- 21. Come ombreggiare una regione sotto una curva con ggplot2
- 22. Android cliccabile TextView Come fare più regioni Fare clic su Testo e prendere Regione Selezione
- 23. #regione analogico per eclissi
- 24. Spostare una regione o una linea in emacs
- 25. Supporto multi regione Heroku
- 26. MKMapView Zoom e regione
- 27. JQVMap regione clicca errore
- 28. S3 Regione standard USA
- 29. regione PDFBox PDFTextStripperByArea coordinate
- 30. Javafx Pane vs Regione?