OpenCV поддерживает только прямоугольные области интереса.
Однако, чтобы выполнить некоторую обработку для определенных пикселей, вы можете использовать некоторые вспомогательные функции.
Одной из них является 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
}
}
}
Пример выше - просто псевдокод, вы должны заставить его работать.