Python抠图软件,很棒的软件
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Hmily ffcd17ae5b
Update README.md
10 months ago
assets Add files via upload 10 months ago
web Add mask download 11 months ago
.gitignore Initial commit 11 months ago
Dockerfile feat:add Dockerfile for containerization 10 months ago
LICENSE Initial commit 11 months ago
README.md Update README.md 10 months ago
app.py Add remove excess transparent background and crop the image function 10 months ago
requirements.txt Update requirements.txt 11 months ago

README.md

Imgae matting

Here are a few effects(omitting mask images)

image-1

image-2

How to Run

Method 1: Run from Source Code

Firstly, you need to download the project code and install the required dependencies.

# Python 3.10

git clone https://github.com/ihmily/image-matting.git
cd image-matting
pip install -r requirements.txt

Next, use the following command to run the web interface.

python app.py

Finally, visit http://127.0.0.1:8000/.

Method 2: Run with Docker

Simply run the following commands after entering the project folder.

Pull the Docker image.

docker pull ihmily/image-matting:0.0.3

After the image is pulled, run the container.

docker run -p 8000:8000 image-matting:0.0.3

Alternatively, you can build the image yourself.

docker build -t image-matting:0.0.3 .

Once the build is complete, run the container as before. Visit http://127.0.0.1:8000 to perform online image matting.

Feel free to choose the method that suits your preference.

Use API

Please run it before use API

File upload

import requests

server = "http://127.0.0.1:8000"
image_path = "image.png"
model_name = "universal"  # people,universal
files = {"image": (image_path, open(image_path, "rb"))}
data = {"model": model_name}
response = requests.post(server+'/matting', files=files, data=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:", server + image_url)
print("mask_url:", server + mask_url)

Url upload

import requests

server = "http://127.0.0.1:8000"
image_url = "http://your-image-url/demo.png"
data = {"image_url": image_url, "model": "universal"}  # people,universal
response = requests.post(server+'/matting/url', json=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:",server+image_url)
print("mask_url:",server+mask_url)

You can freely choose the method you want to upload from above.If you want to get the cropped cutout, you can call crop_image_by_alpha_channel function.

image-3

image-4

References

https://modelscope.cn/models/damo/cv_unet_universal-matting/summary

https://modelscope.cn/models/damo/cv_unet_image-matting/summary