После некоторых манипуляций с изображением и применения маски я получаю то, что хочу. Я ясно вижу на imshow результат «обрезки», что в середине изображения есть серые пиксели. Я пытаюсь получить местоположение с максимальным значением пикселя. Я проверил функциюcrop.channels(), которая возвращает 1.
Mat mask = drawing2;
drawContours(mask, contours, -1, Scalar(255), CV_FILLED);
Mat dist;
distanceTransform( cannyInv, dist, CV_DIST_L2, 3 );
normalize(dist,dist,0.0,1.0,NORM_MINMAX);
Mat crop;
dist.copyTo(crop, mask);
cout << "max.. "<< *std::max_element(crop.begin<double>(),crop.end<double>()) <<endl;
который возвращает макс. 4.25593e-08
for(int y = 0; y < crop.rows; y++)
{
for(int x = 0; x < crop.cols; x++)
{
if (crop.at<unsigned char>(x,y) > 0){
cout << "X........"<<x<<" Y......"<<y<< " = "<<crop.at<unsigned char>(x,y) <<endl;
}
}
}
Результат:
X........604 Y......479 = ¿
X........607 Y......479 =
X........610 Y......479 = ¿
Помоги мне, пожалуйста
PD: Я знаю, что есть похожий вопрос. Но это конкретная проблема.