使用 Linux 命令从图像中删除背景
Python 的力量使 Linux 上的图像编辑变得简单。
图像编辑
171.8.154.64
看起来很神奇哦
来自河南郑州的 Firefox 112.0|Android 11 用户
2023-04-28T02:21:47.000
39.144.29.115
下载安装是个麻烦事，它对Python库很挑剔，无法与现有Python模块库共存。单独创建运行环境，又感觉没有必要。
来自39.144.29.115的 Firefox 112.0|Android 11 用户
2023-04-28T08:51:26.000
120.85.115.81
这种事给 chatgpt 更佳
来自广东广州的 Firefox 112.0|GNU/Linux 用户
2023-04-28T15:58:15.000
Python 的力量使 Linux 上的图像编辑变得简单。
![](/data/attachment/album/202304/27/225433ed1xkzdfz7iuwfyo.jpg)



> 
> Python 的力量使 Linux 上的图像编辑变得简单。
> 
> 
> 


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


[Rembg](https://github.com/danielgatis/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 拍摄的照片。


![Don Watkins at All Things Open conference](/data/attachment/album/202304/27/225521utxhyzm3m5304t3m.jpg)


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



```
$ rembg i dgw_ato.jpeg dgw_noback.jpg

```

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


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


![A processed image of Don Watkins, with the background removed by Rembg.](/data/attachment/album/202304/27/225526x0fg4vjmgwwmyuzh.jpg)


过去我曾使用 [GIMP](https://opensource.com/content/cheat-sheet-gimp) 删除背景，但 `rembg` 比我使用 GIMP 时更快更彻底。


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


### 添加新背景


接下来，我想给图片添加一个新的背景。有不同的方法可以做到这一点。例如，你可以使用 [ImageMagick](https://opensource.com/article/17/8/imagemagick) 组合图像，但获得正确的帧大小可能很复杂。最简单的方法是使用 GIMP 或 [Krita](https://opensource.com/article/21/12/open-source-photo-editing-krita)。


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


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


![Don Watkins with a new background.](/data/attachment/album/202304/27/225533lffsa0wssev0rs7a.jpg)


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


### 尝试 Rembg


Rembg 有三个子命令，你可以在 `--help` 菜单中查看：



```
$ rembg --help

```

他们是：


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


Rembg 使用 [MIT](https://github.com/danielgatis/rembg/blob/main/LICENSE.txt) 许可证发布。下次你需要从图像中删除背景时试试看。


*（题图：MJ/blur background image lens in high resolution, very detailed, 8k）*




---


via: <https://opensource.com/article/23/4/image-editing-linux-python>


作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

