问题标签 [vips]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1833 浏览

python - 使用 pyvips 制作巨大的图像马赛克

我正在尝试使用 pyvips 制作图像马赛克生成器。所以基本上,给定一个图像(以下称为原始图像)创建一个新的、更大的图像,它类似于原始图像,除了每个像素(或更实际的像素组)被更小的不同图像块替换。
我被 pyvips 所吸引,因为据说它可以处理巨大的图像,并且可以处理图像而无需将它们完全加载到内存中。但是,我在创建空白马赛克然后填充平铺图像时遇到问题。
在下面的代码中,我尝试将瓷砖逐行连接在一起以创建马赛克,但不幸的是,这段代码会耗尽我的 RAM 并且总是出现段错误。

我还尝试通过调整原始图像的大小然后使用如下所示的 draw_image 来创建马赛克,但这也会崩溃。

最后,我尝试从 new_temp_file 创建马赛克,但无法写入临时图像。

我怎样才能使这个马赛克程序工作?

0 投票
5 回答
2323 浏览

image - 从图像文件中提取感兴趣区域而不读取整个图像

我正在搜索能够读取图像文件区域(任何格式)的库(任何语言),而无需最初读取整个图像文件。

我遇到了一些选项,例如 vips,它确实不会将整个图像保存在内存中,但似乎仍然需要完全阅读它才能开始。

我意识到这可能不适用于 jpeg 等压缩格式,但理论上听起来 bmps 或 tiffs 应该允许这种类型的阅读。

0 投票
1 回答
1090 浏览

vips - vips 和 pyvips 物理内存使用情况

我循环读取 100 张 jpeg 图像并从中提取不同的区域。

循环内容:

或者在 python 中同样的事情:

我看 RSS,物理内存使用情况。它从大约 40MB 开始,然后随着每个图像的增长而增长。

这是一个图表: 在此处输入图像描述

这是具有相同作物原点、宽度/高度的 4 倍原始尺寸的图像的图表。 在此处输入图像描述

为什么会这样?是否有泄漏的地方?当我设置一个标志来跟踪泄漏时pyvips.base.leak_set(1),我得到了大约 60 MB 的报告。我还使用 cgroups 将进程的物理内存限制为 100 MB。Vips 能够运行而不会崩溃,但速度较慢。作为比较,OpenCV 中的类似操作消耗几乎恒定数量的 RSS,140 MB 或 300 MB,具体取决于图像大小。对于我的实验,vips 在 CPU 时间上赢了几次,但在内存上输了几次。

pyvips 版本:2.0.4

libvips 版本:8.6.1

0 投票
2 回答
371 浏览

python - 减去 2 个相同的图像(黑白和彩色)以获得色差

我主要有黑白图像,有些部分是彩色的(假设它是黄色和绿色)。我想知道这些颜色。

为此,我想我可能会将图像转换为黑白,然后将黑白图像与原始图像进行比较以找出差异。但我不太确定我应该使用哪种算法来做到这一点。

伪代码中的类似内容:

我主要专注于 libvips 来做到这一点,但我只需要一个关于如何做到这一点的建议,然后我就可以编写代码了。

如果您知道我上面描述的任何其他方法,我也将不胜感激。

0 投票
3 回答
2390 浏览

python - 使用 pyvips 连接多个巨大的图像

我试图弄清楚如何通过 python 将多个图像与 vips 连接起来。我在一个文件夹中可以说 30 个(但可以超过 600 个)是条纹的 png 文件,它们的分辨率为 854x289920(所有相同的分辨率)...

如果我尝试将它们与 MemmoryError 水平连接在一起,python 中的 PIL 将立即死亡。所以我四处搜索,发现 VIPS 可以做我需要的两件事加入图像并从结果中制作深度缩放图像。

不幸的是,我不确定如何在 python 中正确地水平连接它们。

我有一个来自文件夹的图像列表,但是我将如何遍历它们并将连接的图像顺序写入磁盘?

0 投票
1 回答
1136 浏览

image-processing - libvips 旋转在设备上没有剩余空间

我正在使用 libvips 来旋转图像。我正在使用具有 3002 MB Ram 和 512MB 临时存储的 VM。AWS Lambda 机器。

我运行旋转图像的命令是

它抛出以下错误

jpg图像约为10Mb。

0 投票
1 回答
447 浏览

imagemagick - 如何在 VIPS 中进行透视扭曲变换?

是否可以使用 VIPS执行以下 ImageMagick透视扭曲命令?如果是这样,命令是什么(使用ruby-vips)?

$ convert my_file.png -matte -virtual-pixel transparent +distort Perspective '0,0,0,60 1500,0,300,0 0,2100,0,2310 1500,2100,300,2100' -crop 300x2310+0+0

0 投票
1 回答
180 浏览

ruby - 如何在 ruby​​-vips 中实现 BW 负值

我有一个带有不规则形状对象轮廓的 png,我想将其变成蒙版。我需要用黑色填充内部,然后交换黑色和白色。它是 8 位灰度,只有 0 和 255 的值。

在此处输入图像描述

我不能填充外部,留下内部白色,因为轮廓本身必须包含在正区域中。(假设已经定义了黑色、白色和红色的数组值。)

这将返回一个全黑光栅。嘘!这可行,但丑陋且效率低下。

有谁知道更优雅的解决方案?感谢您的任何指导。

0 投票
0 回答
102 浏览

python - 使用数据库平铺大量图像

我在需要连接的所有图像的 numpy 数组中有坐标。我使用 OpenCV 使用归一化互相关来查找坐标。我在平铺这些图像时遇到问题,因为它是分辨率为 640X480 像素的非常大的 300X300 图像。目前,我正在使用 pyvips 合并所有这些图像以形成高分辨率图像,但它正在谈论大约 20GB 的 RAM。

有什么方法可以将它降低到<4GB?是否有任何数据库来存储所有图像并显示平铺图像?

我将在使用数据库之前完成所有预处理步骤。我只需要使用图像和坐标的高分辨率平铺图像,而无需使用太多 RAM。甚至我也可以在网格中制作这些图像,无需坐标即可直接连接。请提出一种方法来实现这一点。

0 投票
1 回答
715 浏览

python - RLE8 图像支持/使用 Pillow 解压(PIL fork)

我在 Python3 上使用 Pillow(版本 5.2.0)打开 PNG 和 BMP 图像,并使用 Tkinter GUI 显示它们。PNG 图像正确显示没有问题,但是,当使用 Pillow 的 BmpImagePlugin.py 时,我遇到了一些 BMP 图像的 IOError(“不支持的 BMP 压缩”)。

使用位图插件的源码和一些打印语句,我发现在第 193 行抛出了异常,并且导致异常的图像是使用 RLE8 压缩的(由第 63 行的字典表示);所有其他都可以工作,因为它们是 RAW 格式。在我看来,如果该字典中列出了压缩类型,则应该支持它,但显然情况并非如此。

我的问题:是否有人知道 Pillow 或任何其他可以打开 RLE8 位图图像的 python 库中的解决方法?这是显示我的 PATH 环境的图像,以及下面评论中描述的命令行错误。

编辑:

路径问题

第二次编辑