美工福利!10行代码实现批量抠图

179 篇文章 1 订阅
104 篇文章 1 订阅

前言

老张片修复黑白照片上色之后,我又发现一个图像处理神器

rembg模块

官方文档只用了一句话介绍了rembg模块:Rembg is a tool to remove images background.

然后简单粗暴地展示了这个模块能做的事 – 抠图(去除背景)

图片

官方还提供基于该模块实现的在线抠图工具:图片

如何正确使用rembg模块

如果你的Python版本小于3.7或者大于3.12,将无法使用该模块。

此外该模块又分了两个版本,一个是基于CPU实现计算,另一个则是基于GPU实现计算。

模块安装

CPU版
pip install rembg
GPU版
pip install rembg[gpu]

使用GPU版你还确认下硬件和系统,通过https://onnxruntime.ai查看,你的系统、硬件是否支持onnxruntime-gpu

我是win10系统+N卡,所以是这样的选的:图片

然后我还要使用pip命令安装onnxruntime-gpu模块。

pip install onnxruntime-gpu

使用

基于命令行实现抠图
  • 抠网络资源图
curl -s http://input.png | rembg i > output.png
  • 抠本地图
rembg i path/to/input.png path/to/output.png
  • 抠目标文件夹中所有的图
rembg p path/to/input path/to/output

我找了张网图用命令行试了下抠图效果,抠图前

图片

抠图后

图片

不知道大家感觉如何?

基于Python代码实现抠图
from rembg import remove

input_path = 'input.png'
output_path = 'output.png'

with open(input_path, 'rb') as i:
    with open(output_path, 'wb') as o:
        input = i.read()
        output = remove(input)
        o.write(output)

我又使用代码方式,完成了一次抠图:

图片
抠图后

图片

最后

这个模块解决了一些简单的抠图需求,但我在实际测试中也翻了不少车。

图片

一些物体之间颜色界限不是特别明显的图片,大概率都很会变成这样“缺胳膊少腿”的情况。


如果你想30天学会一门技能!那学习Python准没错

以下是我整理的一些提升程序员自身能力的资料,都已经整理并打包好了。

Python入门全套学习资料附带源码:

学习编程前准备

img

全套软件安装包

附带完整的安装包的安装视频教程资源(新手大礼包已备好)

img

整套零基础入门视频+课件笔记

img

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈

检查学习结果。

👉面试刷题👈

在这里插入图片描述

总结

好啦,这就是今天的内容,入门知识点资料免费发送的哈,想要的小伙伴儿不要错过,带你直

接弯道超车,少走一大波弯路,准备好了嘛?!我们要开始学习一项编程技术啦!

img

资料领取

这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以点击下方微信卡片免费领取 ↓↓↓【保证100%免费】
或者

点此链接】领取

好文推荐

了解python的前景:https://blog.csdn.net/weixin_49895216/article/details/127186741

了解python的兼职:https://blog.csdn.net/weixin_49895216/article/details/127124870

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于opencv4.5.1 c实现智能抠图代码: ```c #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main() { // 读取图像 Mat image = imread("image.jpg"); // 创建掩码图像 Mat mask = Mat::zeros(image.size(), CV_8UC1); // 创建矩形ROI Rect r(100, 100, 300, 300); // 在掩码中画出ROI rectangle(mask, r, Scalar(255), FILLED); // 创建GrabCut算法需要的输入图像 Mat bgModel, fgModel; Mat grabcutInput; image.copyTo(grabcutInput); // 运GrabCut算法 grabCut(grabcutInput, mask, r, bgModel, fgModel, 5, GC_INIT_WITH_RECT); // 创建前景掩码 Mat fgMask = (mask == GC_FGD) | (mask == GC_PR_FGD); // 将前景掩码应用于原始图像 Mat result; image.copyTo(result, fgMask); // 显示原始图像和抠图结果 imshow("Original", image); imshow("Result", result); waitKey(); return 0; } ``` 代码解析: 1. 首先,包含了需要的头文件和命名空间。 2. 然后,读取了一张图像并创建了一个掩码图像。 3. 接着,创建了一个矩形ROI并在掩码中画出了该矩形。 4. 创建了GrabCut算法所需的输入图像,并运了GrabCut算法。 5. 创建了前景掩码并将其应用于原始图像。 6. 最后,显示原始图像和抠图结果,并等待用户按下任意键结束程序。 这段代码实现的是基于GrabCut算法的智能抠图方法,可以根据用户提供的矩形ROI进抠图。在这个例子中,我们将矩形ROI设置为(100, 100, 300, 300)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值