Как получить площадь контура в метрах?

Это мой код для поиска области контура двоичного изображения:

std::vector< std::vector<cv::Point> > contours_temp;

cv::Mat temp = map_;
cv::Mat Expanded_Map;
cv::Mat Contour_map;
std::vector<cv::Vec4i> hierarchy;

for ( int i = 0 ; i < 1.5  / map_resolution_ ; i++ )
{
cv::erode(temp, Expanded_Map, cv::Mat(), cv::Point(-1,-1), 1);
cv::imshow("Expanded Map", Expanded_Map );
temp = Expanded_Map;
Contour_map = Expanded_Map.clone();

cv::findContours( Contour_map , contours_temp , hierarchy , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE );
cv::drawContours( Contour_map , contours_temp, -1, cv::Scalar( 128 , 128 , 128 , 128 ), 2);
cv::line( Contour_map , convertFromMeterToPixelCoordinates<cv::Point>(Pose(1.f,0.2f,0.f)), convertFromMeterToPixelCoordinates<cv::Point>(Pose(-1.f,0.2f,0.f)), cv::Scalar(0,0,0,0), 2);
cv::imshow("contour areas new", Contour_map);

std::cout<<"\nContour size: "<<contours_temp.size()<<"\n";

for( int idx = 0 ; idx >= 0; idx = hierarchy[idx][0] )
{
double area = cv::contourArea(contours_temp[idx]);

std::cout << "area[" << idx << "]: "<< area << std::endl;
}

cv::waitKey();
}

Я хочу получить площадь контура в метрах, а не в пикселях.

double area = cv::contourArea(contours_temp[idx]);

разрешение изображения = 0,05

любая идея?

0

Решение

Задача ещё не решена.

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

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