Как проверить, окружен ли передний план определенным цветом? - PullRequest
1 голос
/ 21 марта 2019

Я хочу проверить, окружен ли передний край определенным цветом (в данном случае он зеленый) или окружен достаточным количеством пикселей определенного цвета.

У меня есть изображение и его маска (ниже приведены2 примера):enter image description hereenter image description hereenter image description hereenter image description here

Я инвертировал маску, преобразовал изображение, окружающее объект, в цветовое пространство 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);

и результат:enter image description hereenter image description hereenter image description hereenter image description here

Ниже приведены примеры, когда объект не окружен зеленым цветом:enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

Одна из моих идей быланайти контур (после набора изображений), аналогичный ballMask и areaAroundBall изображениям.Но это не сработало, так как я все еще имел много подсчетов и не мог найти подобные.

Есть идеи?

...