У меня есть исходный файлВыбор контура в OpenCV
Я применен подходящий порог и получил этот
Теперь я использовал контур, чтобы найти внутренние черные пятна. Я использовал зеленый цвет, чтобы обозначить внешнюю границу и красный для внутренних. Это то, что я получил: -
Я извлек капли, используя красный цвет. Но я хотел бы извлечь только те, которые не имеют зеленого внутри них или, по крайней мере, дают внутреннюю границу только тем, у которых нет другого контура внутри них. так или иначе?
EDIT-1: - Я думал о поиске координат зеленых и красных пикселей и преобразовании всех прочитанных пикселей в зеленый, если они очень близки друг к другу. но кто-нибудь знает, как получить координаты?
EDIT-2 Я следовал методу Дермана и получил 80% результата. проверить другой источник ПОС и маску
теперь следует входы по Derman, я получил это
код четко определяет контуры обозначены цифры 1 и 3 (в виде зеленого и красного цвета) на основе факт, что они либо имеют, либо dsnt имеют дочерние контуры. Но контур 2 явно такой же, как контур 1, и имеет контуры ребенка, но все же он воспринимается как красный. Я поделюсь вам, ребята, код, я знаю, что все это может занять небольшое изменение, но это, кажется, ускользает от механиче-
Mat binMask;
Mat lung_src;
vector<std::vector<cv::Point>> contours;
vector<cv::Vec4i> hierarchy;
int count = 0;
findContours(binMask, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
for (int i = 0; i < contours.size(); i++)
{
if (hierarchy[i][2] != -1) // means it has child contour
{
if (count>1)// number of child countors,if its greater than 1 then green else red
{
drawContours(lung_src, contours, i, Scalar(0, 255, 0), 1, 8, hierarchy, 0, Point());
}
else // means it's count is 1 or less
{
drawContours(lung_src, contours, i, Scalar(0, 0, 255), 1, 8, hierarchy, 0, Point());
}
count++;
}
else // means it doesn't have any child contour
{
drawContours(lung_src, contours, i, Scalar(0, 0, 255), 1, 8, hierarchy, 0, Point());
}
}
imshow("lung", lung_src);
imwrite("lung.tiff", lung_src);
lung_src это показано выше красный/зеленый контур изображения.
В родительском разделе значение указывает, какой контур является родительским. Например, '[-1, 2, -1, 7]' означает, что его родительский 7-й контур. Таким образом, вы можете получить родителя с чем-то вроде «контуров [7]». – Derman
Спасибо за помощь: D –
Если вы считаете, что мой ответ помог, пожалуйста, не забудьте принять его. – Derman