服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 使用 Linux 命令从图像中删除背景

使用 Linux 命令从图像中删除背景

2023-05-08 17:02未知服务器之家 Linux

你有一张很棒的自己的照片,并想将其用于你的社交媒体资料,但背景让人分心。而另一张图片为你的个人资料图片提供了完美的背景。你如何将两者结合起来?一些智能手机应用可以进行这种照片处理,但价格太贵或充斥着广告

使用 Linux 命令从图像中删除背景

你有一张很棒的自己的照片,并想将其用于你的社交媒体资料,但背景让人分心。而另一张图片为你的个人资料图片提供了完美的背景。你如何将两者结合起来?一些智能手机应用可以进行这种照片处理,但价格太贵或充斥着广告软件。而且它们不是开源的。

Rembg正适合于此。

Rembg 是用 Python 编写的,因此请在你的计算机上安装 Python 3。大多数 Linux 发行版默认包含 Python 3。你可以使用这个简单的命令检查你的版本:

$ python3 --version

Rembg 至少需要 Python 3.7 且不高于 Python 3.11。就我而言,我安装了 Python 3.10.6。

在 Linux 上安装 Rembg

我在我的 Linux 笔记本电脑上创建了一个名为PythonCoding的目录,然后创建了一个 Python 虚拟环境:

$ python3 -m venv /home/don/PythonCoding

接下来,我使用pip安装rembg

$ python3 -m pip install rembg

合并图像

是时候施展魔法了。首先,我选择了 2019 年在 All Things Open 拍摄的照片。

使用 Linux 命令从图像中删除背景

Don Watkins at All Things Open conference

为了方便起见,我运行了以下rembg命令以使用较短的文件名重命名它:

$ rembg i dgw_ato.jpeg dgw_noback.jpg

第一次运行rembg时,它会下载一个开源模式识别模型。这可能超过 100 MB,并且rembg将它保存到~/.u2net/u2net.onnx的用户目录中。该模型是 U-2-Net,并使用 Apache 2.0 许可证。有关模式识别模型的更多信息(包括如何训练你自己的模型),请阅读 Rembg 文档。

它在大约十秒钟内创建了我没有背景的新照片。我有一个带有 16 GB 内存的 Ryzen 7。你的体验可能因硬件而异。

使用 Linux 命令从图像中删除背景

A processed image of Don Watkins, with the background removed by Rembg.

过去我曾使用GIMP删除背景,但rembg比我使用 GIMP 时更快更彻底。

这就是删除背景的全部内容。如果添加一个新的呢?

添加新背景

接下来,我想给图片添加一个新的背景。有不同的方法可以做到这一点。例如,你可以使用ImageMagick组合图像,但获得正确的帧大小可能很复杂。最简单的方法是使用 GIMP 或Krita。

我使用 GIMP。首先,打开新创建的图像(在我的例子中是ato_image.jpg)。现在转到 “文件File” 菜单并选择 “打开为图层Open as layers”。选择不同的背景图像。此图像作为现有照片的叠加层打开。

我想将新背景移到我的肖像下方。在 GIMP 窗口的右侧有两个缩略图,每个图像层一个。背景层在上面。我将背景层拖到肖像图像下方,结果如下:

使用 Linux 命令从图像中删除背景

Don Watkins with a new background.

这对我的个人资料照片来说是一个更好的设置!

尝试 Rembg

Rembg 有三个子命令,你可以在--help菜单中查看:

$ rembg --help

他们是:

  • rembg i用于文件
  • rembg p用于文件夹
  • rembg s用于 HTTP 服务器

Rembg 使用MIT许可证发布。下次你需要从图像中删除背景时试试看。

(题图:MJ/blur background image lens in high resolution, very detailed, 8k)

延伸 · 阅读

精彩推荐
  • Linuxlinux下svn命令大全

    linux下svn命令大全

    svn(subversion)版本管理工具,svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。 不管是那种方式,都需要使用各种命令来实现。...

    linux之家5242019-06-11
  • LinuxLinux系统下挂载光盘的教程

    Linux系统下挂载光盘的教程

    Linux系统下怎么挂载光盘?一般Linux系统都是运行在命令行界面,那如何在命令行界面下访问光盘里面的内容呢?下面小编将教大家如何把光盘挂载到Linux的文...

    百度经验7482019-10-18
  • LinuxLinux中的内置命令和外部命令详解

    Linux中的内置命令和外部命令详解

    这篇文章主要介绍了Linux中的内置命令和外部命令详解,本文讲解了什么是内置命令和外部命令、怎样判别是内置命令和外部命令,需要的朋友可以参考下 ...

    Linux教程网4522019-09-27
  • Linux不需要远程传输文件Linux如何关闭scp和sftp命令

    不需要远程传输文件Linux如何关闭scp和sftp命令

    在进行远程文件的传输时,经常会使用scp和sftp命令来进行,由于存在风险在不需要远程传输文件的时候,我们就可以将它们关闭,下面是具体的禁止过程...

    服务器之家18452019-10-11
  • Linux80% 的人都不会的 14 个 Linux 实用技巧

    80% 的人都不会的 14 个 Linux 实用技巧

    熟悉 Linux 系统的同学都知道,它高效主要体现在命令行。通过命令行,可以将很多简单的命令,通过自由的组合,得到非常强大的功能。这篇文章,会分享...

    高效运维5862021-04-21
  • LinuxLinux虚拟机中node.js之开发环境搭建

    Linux虚拟机中node.js之开发环境搭建

    这篇文章主要介绍了Linux虚拟机中node.js之开发环境搭建,有需要的朋友可以了解一下。...

    10882021-11-22
  • LinuxLinux下遇到PyCurl的错误解决方法

    Linux下遇到PyCurl的错误解决方法

    在本篇内容里小编给大家整理的是关于Linux下遇到PyCurl的错误解决方法及相关代码,需要的朋友们可以学习下。 ...

    imlonghao2902020-07-30
  • LinuxLinux使用awk文本处理工具实现多行合并的实例

    Linux使用awk文本处理工具实现多行合并的实例

    在Linux系统中使用awk文本处理工具,有时需要将多行合并,这就需要用到awknext语句了,下面有个不错的示例,需要的朋友可以看看 ...

    Linux教程网4622019-10-17