|
发表于 2019-2-27 14:39:06
|
显示全部楼层
int main() {
Mat frame1;
frame1 = imread("L.jpg");
resize(frame1, frame1, Size(800, 600), 0, 0, INTER_AREA);
imshow("原图像", frame1);
Rect rect(80, 20, 600, 500);
Mat mask, bgdModel, fgdModel;
mask.create(frame1.size(), CV_8UC1);
mask.setTo(Scalar::all(GC_BGD));
rect.x = max(0, rect.x);
rect.y = max(0, rect.y);
rect.width = min(rect.width, frame1.cols - rect.x);
rect.height = min(rect.height, frame1.rows - rect.y);
(mask(rect)).setTo(Scalar(GC_PR_FGD));
grabCut(frame1, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_MASK);
compare(mask, GC_PR_FGD, mask, CMP_EQ);
mask = mask & 1;
Mat foreground(mask.size(), CV_8UC3, Scalar(0, 0, 0));
frame1.copyTo(foreground, mask);
imshow("图像分割", foreground);
waitKey(0);
return 0;
} |
|