【问题标题】:Blurring non-rectangular region of an image, then downsample whole image - OpenCV模糊图像的非矩形区域,然后对整个图像进行下采样 - OpenCV
【发布时间】:2016-03-04 12:27:49
【问题描述】:

我正在使用 OpenCV3 对图像进行模糊和下采样,我只想模糊由二进制掩码定义的区域内的区域,例如:

在该区域模糊后,我想对图像进行下采样而不再次模糊整个图像,因此pyrDown 对我没有用处。

有什么想法吗?

【问题讨论】:

    标签: c++ image opencv mask blur


    【解决方案1】:

    诡计:

    cv::Mat roi;
    cv::blur(image & mask,roi,cv::Size(3,3));//Or whatever blurring you want
    cv::Mat Result=(image & (~mask)) + roi;
    cv::resize(result,result,cv::Size(New_Width,New_height)); // Or whatever downsampling you want
    

    【讨论】:

    • 这对于灰度图像来说是一个很好但很棘手的解决方案,但是,如果 image 是一个 3 通道矩阵,而 mask 是一个二进制(单通道)掩码,则该解决方案不起作用。
    • 适用于 3 通道。只需添加: cv::cvtColor(mask,mask,cv::Gray2BGR);在上述代码之前
    • 我也将二进制掩码克隆为 3 通道图像,问题在于矩阵中值的精度不同......我的错,现在它正在工作,谢谢。跨度>
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2017-11-10
    • 2013-11-10
    相关资源
    最近更新 更多