Czy istnieje coś takiego jak cv::Mat::contains(cv::Rect)
w Opencv?Jak sprawdzić, czy rect znajduje się wewnątrz cv :: Mat w OpenCV?
Tło: Po wykryciu obiektów jak kontury i próbuje ROI dostępu za pomocą cv :: boundingRect moja aplikacja zawieszała. OK, to dlatego, że ograniczające prostokąty obiektu blisko granicy obrazu mogą nie znajdować się w całości w obrazie.
Teraz pominąć obiekty niezupełnie w obrazie o tej kontroli:
if(
cellRect.x>0 &&
cellRect.y>0 &&
cellRect.x + cellRect.width < m.cols &&
cellRect.x + cellRect.width < m.rows) ...
gdzie cellRect jest obwiedni rect obiektu i m jest obraz. Mam nadzieję, że jest dedykowana do tego funkcja opencv.
Prawdopodobnie nie jest to szybkie rozwiązanie, ale interesujące. '(rect i rect_mat)' utworzyłoby nowy obiekt Mat i = = porównałoby wszystkie komórki. Będzie to na pewno wolniejsze, niż uzyskanie i skompilowanie 4 liczb x, y, w, h. –
@ValentinHeinitz Nie nowy "Mat", nowy "Rect" faktycznie, który jest w zasadzie tylko 4 liczb '(x, y, szerokość, wysokość)'. Powinno to być relatywnie szybkie. : P – herohuyongtao
OK, rozumiem! Teraz wygląda naprawdę elegancko! –