Использование ROI в OpenCV?
ROI может быть реализован только с прямоугольником. Однако у меня есть контур, который я хочу установить как ROI. Кто-нибудь имеет представление о том, как я буду использовать контур в качестве ROI, а не прямоугольника?
в противном случае, если это невозможно, как я могу фокусировать свои действия только в пикселях в определенном контуре?
спасибо
PS: извините за все эти вопросы OpenCV. Просто очень запутался:$
1 ответов
OpenCV поддерживает только прямоугольные ROIs.
однако, чтобы сделать некоторую обработку для определенных пикселей, вы можете использовать некоторые вспомогательные функции.
один из них-pointPolygonTest(), который говорит вам, что данный пиксель принадлежит не полигону.
Так вы можете написать что-то вроде
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(pointPolygonTest(Point(i,j),myPolygon))
{
// do some processing
}
}
}
также проверьте это образец http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/point_polygon_test/point_polygon_test.html#point-polygon-test
другой (более быстрый) вариант-это тот, который подслащен @andeas-haferburg. Сделайте маску, нарисовав свой многоугольник в новом изображении оттенков серого:
drawPoly()
(Так что фон равен 0, а многоугольник равен 255), то вы можете перейти к некоторым другим функциям или использовать его самостоятельно:
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(mask[j+w*i]))
{
// do some processing
}
}
}
пример выше просто псевдо-код, вы должны заставить его работать.