程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了OpenCV Python中的渐变蒙版混合大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决OpenCV Python中的渐变蒙版混合?

开发过程中遇到OpenCV Python中的渐变蒙版混合的问题如何解决?下面主要结合日常开发的经验,给出你关于OpenCV Python中的渐变蒙版混合的解决方法建议,希望对你解决OpenCV Python中的渐变蒙版混合有所启发或帮助;

因此,主要的问题(mask/255) * blur + (1-mask/255)*anotherimg是运算符。他们只在一个频道上工作。下一个问题是使用浮点数来“平滑”。 我将与Alpha通道混合的代码更改为: 1)我将每个通道用于源图像和蒙版 2)执行公式 3)合并通道

def blend_with_mask_matrix(src1, src2, mask):
    res_chAnnels = []
    for c in range(0, src1.shape[2]):
        a = src1[:, :, c]
        b = srC2[:, :, c]
        m = mask[:, :, c]
        res = cv.add(
            cv.multiply(b, cv.divIDe(np.full_like(m, 255) - m, 255.0, dtype=cv.CV_32F), dtype=cv.CV_32F),
            cv.multiply(a, cv.divIDe(m, 255.0, dtype=cv.CV_32F), dtype=cv.CV_32F),
           dtype=cv.CV_8U)
        res_chAnnels += [res]
    res = cv.merge(res_chAnnels)
    return res

作为渐变蒙版,我只是使用模糊的圆圈。

def blur_image(cv_image, radius, center, gaussian_core, sigma_X):
    blurred = cv.GaussianBlur(cv_image, gaussian_core, sigma_X)

    circle_not_mask = np.zeros_like(cv_imagE)
    cv.circle(circle_not_mask, center, radius, (255, 255, 255), -1)
#Smoothing borders
    cv.GaussianBlur(circle_not_mask, (101, 101), 111, dst=circle_not_mask)
# CompuTing
    res = blend_with_mask_matrix(cv_image, blurred, circle_not_mask)
    return res

结果:

它的工作比没有平滑边界的第一个版本慢一些,但是可以。

解决方法

我有一个图像和圆圈区域。除了圆圈区域,我需要模糊所有内容。我还需要使圆的边界平滑。

现在我在python中有代码,这不会模糊圆的边界。

def blur_image(cv_image,radius,center,gaussian_core,sigma_X):
    blurred = cv.GaussianBlur(cv_image,sigma_X)
    h,w,d = cv_image.shape
# masks
    circle_mask = np.ones((h,w),cv_image.dtypE)
    cv.circle(circle_mask,(0,0),-1)
    circle_not_mask = np.zeros((h,cv_image.dtypE)
    cv.circle(circle_not_mask,(2,2,2),-1)
# CompuTing
    blur_around = cv.bitwise_and(blurred,blurred,mask=circle_mask)
    image_in_circle = cv.bitwise_and(cv_image,cv_image,mask=circle_not_mask)
    res = cv.bitwise_or(blur_around,image_in_circlE)
    return res

当前版本:
如何模糊圆的边界?在输出示例中,我在程序中使用了渐变蒙版。在opencv中有类似的东西吗?
更新04.03
所以,我已经从这个回答的主题以及我所拥有的内容中尝试了公式: 代码:

def blend_with_mask_matrix(src1,src2,mask):
    res = src2 * (1 - cv.divide(mask,255.0)) + src1 * cv.divide(mask,255.0)
return res

此代码应与最近的代码相似,但事实并非如此。圆圈中的图像略有不同。颜色有问题。 问题仍然悬而未决。

大佬总结

以上是大佬教程为你收集整理的OpenCV Python中的渐变蒙版混合全部内容,希望文章能够帮你解决OpenCV Python中的渐变蒙版混合所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。