C++ vectors and MAT in JavaCV

193 views
Skip to first unread message

Oleg Lukin

unread,
Apr 28, 2016, 6:30:08 PM4/28/16
to javacv
Hello. I translate my code from clear OpenCV C++ to Java for my Android App (using JavaCV). I'm using goodFeaturesToTrack functions, that find and save corner points. 

And I'm at an impasse.

In OpenCV C++ i use vectors for store my data. drawContours save data to vectors, goodFeaturesToTrack are using vectors, but in JavaCV i can't use vectors, because functions require MAT for their arguments.

The greatest difficulty I experience with the processing of the corner points. My code on C++:

vector<Point2f> corners;
....
goodFeaturesToTrack(src_gray,
corners,
maxCorners,
qualityLevel,
minDistance,
Mat(),
blockSize,
useHarrisDetector,
k);
...
for (int j = 0; j < boundRect.size(); j++) {
vector<Point2f> tempVectorCorners;
for (int i = 0; i < corners.size(); i++)
{
if (boundRect[j].contains(corners[i])) {
tempVectorCorners.push_back(corners[i]);
}
}
goodPoints.push_back(tempVectorCorners);
}

but JavaCV's goodFeaturesToTrack require corners as Mat, and i don't know how to get elements from corners in my cycle. 

So, my question is - what is best choise for JavaCV - MatVector (what is it?), Mat or ArrayList? How to convert each other?

Dinh Thap

unread,
Apr 28, 2016, 11:38:47 PM4/28/16
to javacv
Point2f derives from FloatPointer, which has functionality for dealing 
with native arrays, so we can access the 4 points you're interested in 
this way, for example: 

Point2f vertices = new Point2f(4); //vector 4 Point2f
rotatedRect.points(vertices); 
float[] coordinates = new float[8]; 
vertices.get(coordinates); 
Reply all
Reply to author
Forward
0 new messages