Sto tentando di utilizzare cv::calcOpticalFlowPyrLK
ma a volte un'asserzione interna in quella funzione non riesce. L'asserzione è npoints = prevPtsMat.checkVector(2, CV_32F, true)) >= 0
. Sto usando OpenCV 2.3.1. Il codice sorgente per questa funzione è disponibile here.cv :: goodFeaturesToTrack non restituisce alcuna funzionalità
È difficile comprendere il codice, soprattutto a causa della mia limitata esperienza con la computer grafica e la mancanza di commenti. Perché questa affermazione viene innescata e cosa dice del mio problema?
Edit: chiamo la funzione come segue:
cv::calcOpticalFlowPyrLK(curBwFrame, prvFrame, features, newFeatures, trackingStatus, errors);
ho scoperto che il features
vettore, che è stato ottenuto chiamando cv::goodFeaturesToTrack(curBwFrame, features, 5, 0.2, 0.5, skinMask);
con una maschera non vuota che sembra essere sufficientemente grande e un immagine valida, non contiene alcuna funzionalità. Come può accadere?
curBwFrame
skinMask
sono in grado di riprodurre il problema utilizzando il seguente frammento di codice:
#include <vector>
#include <cassert>
#include <opencv2\opencv.hpp>
using std::vector;
using namespace cv;
int main() {
vector<Point2f> features;
cv::Mat curBwFrame = imread("curBwFrame.png");
cv::cvtColor(curBwFrame, curBwFrame, CV_RGB2GRAY);
imwrite("test.png", curBwFrame);
cv::Mat skinMask = imread("skinMask.png");
cv::cvtColor(skinMask, skinMask, CV_RGB2GRAY);
imwrite("test.png", skinMask);
cv::goodFeaturesToTrack(curBwFrame, features, 5, 0.2, 0.5, skinMask);
assert(features.size() > 0);
return 0;
}
asserzioni controlli che argomento di input è un vettore di punti. Ed è difficile rispondere alla tua domanda senza il tuo codice. –
Ho aggiunto ulteriori informazioni sopra, ma non sono sicuro di quali altre informazioni potrebbero essere pertinenti. Potrei scaricare alcuni frammenti di codice grandi qui ma probabilmente contengono molte informazioni irrilevanti. – Pieter
Mi dispiace per il fatto di aver mescolato alcune chiamate di funzione in precedenza. Ho aggiunto lo snippet corretto sopra! Posso postare la maschera e l'immagine sorgente anche per 'goodFeaturesToTrack' se è necessario. – Pieter