缩小图像以进行抓取

时间:2019-03-15 08:25:05

标签: opencv

我有一个输入图像(大约24 MP)。在OpenCV中提供如此大的图像以进行抓取很费时,因此首先我想缩小图像的尺寸,然后再扩大掩模的尺寸。因此,在grabCut函数中,我将图像按比例缩小,如下所示:

//Downsampling
    double c_ratio = 0.0;
    double r_ratio = 0.0;
    double ratio = 0.0;
    bool donwSampled = false;
    if (img.cols > 800 || img.rows > 600){
        c_ratio = img.cols/800.0;
        r_ratio = img.rows/600.0;
        ratio = (c_ratio > r_ratio)?r_ratio:c_ratio;
        printf("downscaled by: %f\n", ratio);
        fflush(stdout);
        resize( img, img, Size( img.cols/ratio, img.rows/ratio ),0,0,INTER_LANCZOS4);
        resize( mask, mask, Size( mask.cols/ratio, mask.rows/ratio ),0,0,INTER_LANCZOS4);
        donwSampled = true;
    }

此功能结束时,我将按如下所示进行升级:

//Upsampling
if(donwSampled){
    resize( img, img, Size( img.cols*ratio, img.rows*ratio ));
    resize( mask, mask, Size( mask.cols*ratio, mask.rows*ratio ));
}

输入掩码如下:

in

输出是这样的:

out

在输出图像中可以看到,笔刷周围的小区域在前景和背景选择中均标记为错误。

0 个答案:

没有答案