【问题标题】:Removing watermark from an image using bbox parameters使用 bbox 参数从图像中去除水印
【发布时间】:2020-11-26 00:57:06
【问题描述】:

我正在使用计算机视觉云服务来检测一组图像上的水印。云服务以边界框(bbox)的形式返回水印的位置。例如,一个输出如下所示:

  "text": "Watermarked Text",
  "words": [
    {
      "boundingBox": [
        889,
        1043,
        939,
        1044,
        939,
        1076,
        888,
        1075
      ]

Bounding Box 参数之前已经在Stack Overflow 上进行了解释。

我的目标是通过将 bbox 参数作为输入提供给可以去除水印的工具来从图像中去除水印。

我认为 OpenCV-Python 非常适合这项任务。我检查了他们的Image Processing API,但找不到任何解决方案。我能找到的最接近的解决方案是inpainting

我想知道使用 OpenCV 完成任务的最佳方法是什么?如有任何帮助,我将不胜感激。

【问题讨论】:

  • 这是一个研究项目,而不是一个狭隘的编码问题。我可以非常想象一本书描述了不同的技术,以及每种技术在哪些情况下适用(相关性:正如stackoverflow.com/help/dont-ask 所说,“如果你能想象一本书可以回答你的问题,那么你”要求太多”)。
  • 我认为边界框本身并不能为简单的图像处理提供足够的信息来去除任何水印,而不是简单地用恒定颜色填充它。基于补丁的修复可能能够用图像纹理填充它。
  • 贴一张你希望可以去除的带水印的样张图片?
  • 给个示例图片

标签: python opencv watermark video-watermarking


【解决方案1】:

水印去除不是那么简单的任务,但可以使用 GAN 网络解决。 作为参考,您可以查看here

【讨论】:

    【解决方案2】:

    这是一个示例代码,其中包含使用 opencv 和 numpy 的示例参考, 这不完全是您对完整问题的回答,但它是尝试的好地方。此代码仅适用于此图像,但您可以稍微修改代码以使其适用于您的应用程序

    您也可以从此链接获取图像和代码 https://www.kaggle.com/general/169854 我自己尝试了代码,它得到了与链接完全相同的结果,这是导入了必要包的代码

    import cv2 
    import numpy as np 
    import matplotlib.pyplot as plt 
    
    img = cv2.imread("waterMark1.jpg")
    
    alpha = 2.596594846224838
    beta = -161
    
    new = alpha * img + beta
    new = np.clip(new, 0, 255).astype(np.uint8)
    
    print(alpha, beta)
    plt.imshow(new)
    plt.title('my picture')
    plt.show()
    cv2.imwrite("cleaned.png", new)
    

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 2022-06-15
      • 1970-01-01
      • 2021-11-17
      • 2021-11-14
      • 2018-11-20
      • 1970-01-01
      • 2018-04-02
      • 2023-01-08
      相关资源
      最近更新 更多