Преобразование выпуклых точек в точки, которые я могу использовать

Я использую Visual C ++ 2010 Express с OpenCV и пытаюсь отследить двумя руками. До сих пор у меня уже есть выпуклые дефекты выпуклости и выпуклости, но у меня возникают проблемы с получением точек выпуклого налета. Я хотел бы использовать их для рисования линии от центра каждой руки (точки, с которой я уже могу рисовать линии) до каждой точки выпуклой оболочки, а затем я могу добавить к ней фильтры, чтобы она выбирала только те, которые предназначены для пальцев. Это не проблема, мне просто нужно перевести точки корпуса в рабочий формат для функций рисования. Мой код в настоящее время выглядит так:

findContours(temp,Lcontours,hierarchy,CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE );
vector<vector<int> >hullI( Lcontours.size() );
vector<vector<Point> >hullP( Lcontours.size() );
vector<vector<Vec4i>> defects( Lcontours.size() );
std::sort(Lcontours.begin(), Lcontours.end(),compare_contour_areas);

for( int f = 0; f < Lcontours.size(); f++ ){
convexHull( Mat(Lcontours[f]), hullI[f], true );
convexHull( Mat(Lcontours[f]), hullP[f], true );
convexityDefects(Lcontours[f],hullI[f],defects[f]);
drawContours(cameraFeed(lefT), Lcontours, 0, Scalar(0,200,200), 1.5, 8, vector<Vec4i>(), 0, Point() );
drawContours(cameraFeed(lefT), hullP, 0, Scalar(200,200,0), 1.5, 8, vector<Vec4i>(), 0, Point() );

Как преобразовать вектор оболочки (не имеет значения, какой из них, hullI для int или hullP для точечных форматов) во что-то, о чем я могу сказать «напечатать x и y из hull [f]». Пока что это похоже на корпус [?] [?] [?] [?], Потому что это вектор внутри вектора или что-то еще? Связано ли это с концом функций выпуклого Халла, где последний параметр имеет значение true или false?

0

Решение

for( int f = 0; f < Lcontours.size(); f++ ){
convexHull( Mat(Lcontours[f]), hullI[f], true );
convexHull( Mat(Lcontours[f]), hullP[f], true );

vector <Point> thisHull(hullP[f].size());
thisHull=hullP[f]; //which hull you want to look at
int pointYouWant; //point you want to interrogate

cout<<"for hull #"<< f << ", point #" << pointYouWant << " , x= " << thisHull[pointYouWant].x << " , y= " << thisHull[pointYouWant].y << endl;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector