Я хочу проверить, окружен ли передний край определенным цветом (в данном случае он зеленый) или окружен достаточным количеством пикселей определенного цвета.
У меня есть изображение и его маска (ниже приведены2 примера):
Я инвертировал маску, преобразовал изображение, окружающее объект, в цветовое пространство HSV и отфильтровал по зеленому цвету:
Rect ballBBox = boundingRect(contour);
Mat ballMask(mask, ballBBox);
Mat ballImg(img, ballBBox);
Mat imgSurroundingBall;
Mat ballMaskInv;
bitwise_not(ballMask, ballMaskInv),
ballImg.copyTo(imgSurroundingBall, ballMaskInv);
Mat imgSurroundingBallHSV;
cvtColor(imgSurroundingBall, imgSurroundingBallHSV, CV_BGR2HSV);
Scalar greenLower = Scalar(35, 100, 20);
Scalar greenUpper = Scalar(70, 255, 255);
Mat areaAroundBall;
inRange(imgSurroundingBallHSV, greenLower, greenUpper, areaAroundBall);
и результат:
Ниже приведены примеры, когда объект не окружен зеленым цветом:
Одна из моих идей быланайти контур (после набора изображений), аналогичный ballMask
и areaAroundBall
изображениям.Но это не сработало, так как я все еще имел много подсчетов и не мог найти подобные.
Есть идеи?