OpenCV: обнаружение движения в плитке - PullRequest
1 голос
/ 18 сентября 2011

Я хотел бы обнаружить движение в ячейке сетки, определенной как N * N, я пробовал способ, который делается с помощью https://stackoverflow.com/users/724461/andrey-kamaev и это показано в следующем коде, но результат не совсем точен, я хотел бы сделать более точный подход.

cv::Sobel(input, sobel, CV_32F, 1, 1); 

              int h = input.rows / NUM_BLOCK_ROWS; 
              int w = input.rows / NUM_BLOCK_COLUMNS; 
              float pos=0;
              for (int r = 0; r<NUM_BLOCK_ROWS; r++) 
                     for(int c=0; c<NUM_BLOCK_COLUMNS; c++) 
                     { 
                           cv::Scalar weight = cv::sum(sobel(cv::Range(h*r, (r+1)*h), cv::Range(c*w, (c+1)*w))); 

                           if (weight[0] + weight[1] > 60) {
                                  input(cv::Range(h*r, (r+1)*h-1), cv::Range(c*w, (c+1)*w-1)).setTo(cv::Scalar(0,0,255)); 

                           }

                     } 

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

А как насчет оптического потока ? Реализация OpenCV здесь

0 голосов
/ 26 сентября 2011

Я использовал подход с дифференцированием кадров, и он работал.

...