2015-06-14 6 views
1

Допустим, у меня есть следующее изображение:Как создать вращающуюся прямоугольную или многоугольную ROI/маску?

enter image description here

И мой интерес область выглядит следующим образом:

ROI

И я хочу иметь следующий результат:

enter image description here

Как c двутавровой добиться этого, зная, что ROI обозначается четырьмя точками:

Point pt1(129,9); 
Point pt2(284,108); 
Point pt3(223,205); 
Point pt4(67,106); 

ответ

3

Идея заключается в том, чтобы использовать fillPoly(), чтобы заполнить все пиксели внутри повернутой прямоугольника/многоугольника до 0, 255 иначе:

Mat mask = cv::Mat(img.size(), CV_8UC1, Scalar(255));  // suppose img is your image Mat 

vector<vector<Point>> pts = { { pt1, pt2, pt3, pt4 } }; 
fillPoly(mask, pts, Scalar(0));       // <- do it here 
+0

Большое спасибо! – Apastrix