Rembg هي أداة لإزالة خلفية الصور.
إذا كان هذا المشروع قد ساعدك، يرجى النظر في التبرع.
PhotoRoom إزالة واجهة برمجة تطبيقات الخلفية https://photoroom.com/api API سريع ودقيق لمزيل الخلفية |
python: >3.7, <3.13
إذا كان onnxruntime
مثبتًا لديك بالفعل، فما عليك سوى تثبيت rembg
:
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
بخلاف ذلك، قم بتثبيت rembg
مع دعم واضح لوحدة المعالجة المركزية/وحدة معالجة الرسومات.
دعم وحدة المعالجة المركزية:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
دعم GPU:
أولاً، عليك التحقق مما إذا كان نظامك يدعم onnxruntime-gpu
.
انتقل إلى https://onnxruntime.ai وتحقق من مصفوفة التثبيت.
إذا كانت الإجابة بنعم، فقط قم بتشغيل:
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
بعد خطوة التثبيت، يمكنك استخدام rembg فقط بكتابة rembg
في نافذتك الطرفية.
يحتوي الأمر rembg
على 4 أوامر فرعية، واحد لكل نوع إدخال:
i
للملفاتp
للمجلداتs
httpb
للتيار الثنائي RGB24 بكسليمكنك الحصول على مساعدة حول الأمر الرئيسي باستخدام:
rembg --help
كذلك، حول جميع الأوامر الفرعية التي تستخدم:
rembg < COMMAND > --help
i
يستخدم عندما يكون الإدخال والإخراج عبارة عن ملفات.
إزالة الخلفية من الصورة البعيدة
curl -s http://input.png | rembg i > output.png
إزالة الخلفية من ملف محلي
rembg i path/to/input.png path/to/output.png
إزالة الخلفية التي تحدد النموذج
rembg i -m u2netp path/to/input.png path/to/output.png
قم بإزالة الخلفية وإرجاع القناع فقط
rembg i -om path/to/input.png path/to/output.png
قم بإزالة الخلفية باستخدام حصيرة ألفا
rembg i -a path/to/input.png path/to/output.png
تمرير المعلمات الإضافية
SAM example
rembg i -m sam -x ' { "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] } ' examples/plants-1.jpg examples/plants-1.out.png
Custom model example
rembg i -m u2net_custom -x ' {"model_path": "~/.u2net/u2net.onnx"} ' path/to/input.png path/to/output.png
p
يستخدم عندما يكون الإدخال والإخراج عبارة عن مجلدات.
إزالة الخلفية من جميع الصور الموجودة في المجلد
rembg p path/to/input path/to/output
كما كان من قبل، ولكن في انتظار معالجة الملفات الجديدة/المتغيرة
rembg p -w path/to/input path/to/output
s
تستخدم لبدء خادم http.
rembg s --host 0.0.0.0 --port 7000 --log_level info
للاطلاع على وثائق نقاط النهاية الكاملة، انتقل إلى: http://localhost:7000/api
.
إزالة الخلفية من عنوان URL للصورة
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
إزالة الخلفية من الصورة التي تم تحميلها
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
معالجة سلسلة من صور RGB24 من stdin. تم تصميم هذا للاستخدام مع برنامج آخر، مثل FFMPEG، الذي يقوم بإخراج بيانات RGB24 بكسل إلى stdout، والتي يتم نقلها عبر stdin لهذا البرنامج، على الرغم من أنه لا يوجد شيء يمنعك من كتابة الصور يدويًا في stdin.
rembg b image_width image_height -o output_specifier
الحجج:
output-%03u.png
، فستتم تسمية ملفات المخرجات باسم output-000.png
، output-001.png
، و output-002.png
، وما إلى ذلك. تم حفظه بتنسيق PNG بغض النظر عن الامتداد المحدد. يمكنك حذفه لكتابة النتائج إلى stdout.مثال للاستخدام مع FFMPEG:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
يجب أن تتطابق قيم العرض والارتفاع مع أبعاد الصور الناتجة من FFMPEG. ملاحظة بالنسبة لـ FFMPEG، الجزء " -an -f rawvideo -pix_fmt rgb24 pipe:1
" مطلوب لكي يعمل كل شيء.
الإدخال والإخراج بالبايت
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 )
الإدخال والإخراج كصورة PIL
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image . open ( input_path )
output = remove ( input )
output . save ( output_path )
الإدخال والإخراج كمصفوفة numpy
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2 . imread ( input_path )
output = remove ( input )
cv2 . imwrite ( output_path , output )
فرض الإخراج بالبايت
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 , force_return_bytes = True )
o . write ( output )
كيفية التكرار على الملفات بطريقة أداء
from pathlib import Path
from rembg import remove , new_session
session = new_session ()
for file in Path ( 'path/to/folder' ). glob ( '*.png' ):
input_path = str ( file )
output_path = str ( file . parent / ( file . stem + ".out.png" ))
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , session = session )
o . write ( output )
لرؤية قائمة كاملة من الأمثلة حول كيفية استخدام rembg، انتقل إلى صفحة الأمثلة.
ما عليك سوى استبدال الأمر rembg
لـ docker run danielgatis/rembg
.
جرب هذا:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
يتم تنزيل جميع الطرز وحفظها في المجلد الرئيسي للمستخدم في دليل .u2net
.
النماذج المتاحة هي:
إذا كنت تريد المزيد من النماذج المضبوطة، جرب هذا: #193 (تعليق)
تعتمد هذه المكتبة بشكل مباشر على مكتبة onnxruntime. لذلك، لا يمكننا تحديث إصدار Python إلا عندما يوفر onnxruntime الدعم لهذا الإصدار المحدد.
هل أعجبك بعض أعمالي؟ اشتري لي قهوة (أو على الأرجح بيرة)
حقوق الطبع والنشر (ج) 2020 إلى الوقت الحاضر لدانيال جاتيس
مرخص بموجب ترخيص MIT