问题标签 [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.
python - 使用 pyvips 制作巨大的图像马赛克
我正在尝试使用 pyvips 制作图像马赛克生成器。所以基本上,给定一个图像(以下称为原始图像)创建一个新的、更大的图像,它类似于原始图像,除了每个像素(或更实际的像素组)被更小的不同图像块替换。
我被 pyvips 所吸引,因为据说它可以处理巨大的图像,并且可以处理图像而无需将它们完全加载到内存中。但是,我在创建空白马赛克然后填充平铺图像时遇到问题。
在下面的代码中,我尝试将瓷砖逐行连接在一起以创建马赛克,但不幸的是,这段代码会耗尽我的 RAM 并且总是出现段错误。
我还尝试通过调整原始图像的大小然后使用如下所示的 draw_image 来创建马赛克,但这也会崩溃。
最后,我尝试从 new_temp_file 创建马赛克,但无法写入临时图像。
我怎样才能使这个马赛克程序工作?
image - 从图像文件中提取感兴趣区域而不读取整个图像
我正在搜索能够读取图像文件区域(任何格式)的库(任何语言),而无需最初读取整个图像文件。
我遇到了一些选项,例如 vips,它确实不会将整个图像保存在内存中,但似乎仍然需要完全阅读它才能开始。
我意识到这可能不适用于 jpeg 等压缩格式,但理论上听起来 bmps 或 tiffs 应该允许这种类型的阅读。
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
python - 减去 2 个相同的图像(黑白和彩色)以获得色差
我主要有黑白图像,有些部分是彩色的(假设它是黄色和绿色)。我想知道这些颜色。
为此,我想我可能会将图像转换为黑白,然后将黑白图像与原始图像进行比较以找出差异。但我不太确定我应该使用哪种算法来做到这一点。
伪代码中的类似内容:
我主要专注于 libvips 来做到这一点,但我只需要一个关于如何做到这一点的建议,然后我就可以编写代码了。
如果您知道我上面描述的任何其他方法,我也将不胜感激。
python - 使用 pyvips 连接多个巨大的图像
我试图弄清楚如何通过 python 将多个图像与 vips 连接起来。我在一个文件夹中可以说 30 个(但可以超过 600 个)是条纹的 png 文件,它们的分辨率为 854x289920(所有相同的分辨率)...
如果我尝试将它们与 MemmoryError 水平连接在一起,python 中的 PIL 将立即死亡。所以我四处搜索,发现 VIPS 可以做我需要的两件事加入图像并从结果中制作深度缩放图像。
不幸的是,我不确定如何在 python 中正确地水平连接它们。
我有一个来自文件夹的图像列表,但是我将如何遍历它们并将连接的图像顺序写入磁盘?
image-processing - libvips 旋转在设备上没有剩余空间
我正在使用 libvips 来旋转图像。我正在使用具有 3002 MB Ram 和 512MB 临时存储的 VM。AWS Lambda 机器。
我运行旋转图像的命令是
它抛出以下错误
jpg图像约为10Mb。
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
python - 使用数据库平铺大量图像
我在需要连接的所有图像的 numpy 数组中有坐标。我使用 OpenCV 使用归一化互相关来查找坐标。我在平铺这些图像时遇到问题,因为它是分辨率为 640X480 像素的非常大的 300X300 图像。目前,我正在使用 pyvips 合并所有这些图像以形成高分辨率图像,但它正在谈论大约 20GB 的 RAM。
有什么方法可以将它降低到<4GB?是否有任何数据库来存储所有图像并显示平铺图像?
我将在使用数据库之前完成所有预处理步骤。我只需要使用图像和坐标的高分辨率平铺图像,而无需使用太多 RAM。甚至我也可以在网格中制作这些图像,无需坐标即可直接连接。请提出一种方法来实现这一点。
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 环境的图像,以及下面评论中描述的命令行错误。
路径问题