首页 > 解决方案 > 如何在图像中动态查找主矩形图像?

问题描述

我想截取图像的屏幕截图,然后从屏幕截图中提取图像。

例如:

例子

我想从屏幕截图中动态提取该图像。但是,我希望能够动态检测要提取的图像在屏幕截图图像中的位置。例如,如果我在 Instagram 上截取一张图片,我想从截屏中动态提取图片。所以我觉得我只需要想出一个计算来找到截图图像中的“主要主题”在哪里。

我已经进行了一些研究,但我发现的大部分内容是人们想要从扫描图像中提取图像,其中围绕主题的所有内容大部分都是纯色,所以我认为这不会在这里起作用。

我使用 Jimp ( https://www.npmjs.com/package/jimp ) 作为图像处理器,因为它没有本机依赖项,​​这将进入 React Native 应用程序。

任何帮助将不胜感激。提前致谢!

标签: javascriptnode.jsimageextractjimp

解决方案


我从来没有最终找到已经存在的东西,所以我自己建造了一些东西。使用我的img-items节点模块,我可以通过执行以下操作来完成此操作:

const Jimp = require('jimp')
const imgItems = require('imgItems')

Jimp.read('image.png')
  .then(image => {
    return imgItems(image)
      .then(items => {
        const largest = items.reduce((p, c) => ((p.width + p.height) > (c.width + c.height)) ? p : c)

        return image
          .crop(largest.left, largest.top, largest.width, largest.height)
          .writeAsync('largest.png')
      })
  })

推荐阅读