对图像进行裁剪后,删掉没有前景目标的图像

该文章介绍了一个Python函数,用于检查指定路径下的空文件,并根据给定的标签路径移除相应的图片。主要涉及os和path模块的使用。
from os.path import isdir, abspath, getsize, join
from os import listdir, system, remove
import os

 
def get_del_name(label_path, get_remove=False):
    del_names = []
    file_names = listdir(abspath(label_path))
    for file_name in file_names:
        content = join(label_path, file_name)
        if getsize(content) == 0:
            name = file_name.split(".")[0]
            del_names.append(name)
            if get_remove:
                remove(content)

    return del_names


def del_images(img_path, del_names):
    for name in del_names:
        image_name = name + ".png"
        content = join(img_path, image_name)
        if os.path.isfile(content):
            remove(content)
               

def main():
    
    label_path = "/datasets/val/label/"
    img_path = "/datasets/val/images/"
    
    del_names = get_del_name(label_path, True)
    del_images(img_path, del_names)
    
 
if __name__ == '__main__':
    main()

### 在线图像前景背景分割工具 目前有许多在线工具可以帮助用户轻松实现图像前景和背景分离功能。这些工具通常基于先进的机器学习模型以及计算机视觉技术开发而成,能够提供高质量的分割效果。 以下是几个常用的在线图像前景背景分割网站: #### 1. **Remove.bg** 这是一个非常流行的在线工具,专门用于移除照片中的背景并保留前景对象。它支持上传多种格式的图片文件,并能快速生成透明背景的 PNG 文件。 - 特点:无需手动标注即可自动检测前景物体[^3]。 - 地址:https://www.remove.bg/ #### 2. **Canva 的背景删除器** Canva 是一款强大的设计平台,其内置的功能之一就是背景去除工具。通过简单的拖放操作,用户可以轻松去掉需要的背景部分。 - 特点:适合初学者使用;界面友好且免费版本可用[^4]。 - 地址:https://www.canva.com/learn/remove-backgrounds-online-free/ #### 3. **PhotoScissors** 此服务允许用户裁剪掉复杂场景下的多余元素,同时保持主体清晰可见。即使面对毛发细节较多的人物肖像也能表现出色。 - 特点:提供了试用版供体验完整特性前测试性能[^5]。 - 官网链接:http://photoscissors.com/ #### 4. **DeepArtEffects** 除了艺术风格转换外,该站点还具备一定的图像编辑能力,其中包括智能选取目标区域以便进一步加工处理等功能选项可供选择尝试看是否满足需求侧重点同之处在于侧重于创造性的应用而非单纯的技术演示层面考虑因素更多一些比如用户体验度等方面也会有所差异因此具体表现形式会有所同需要注意调整参数设置来获得最佳结果呈现方式可能会因个人偏好而异所以建议多做几次实验找到最适合自己的方案最为重要[^6]。 - 访问网址:https://deeparteffects.com/tools/image-editor --- ```python import cv2 import numpy as np def interactive_foreground_extraction(image_path, mask=None): img = cv2.imread(image_path) # 创建一个与输入图像相同尺寸的零矩阵作为初始掩码 if mask is None: h,w,c = img.shape mask = np.zeros((h,w), dtype=np.uint8) rect = (0,0,img.shape[1]-1,img.shape[0]-1) bgdModel = np.zeros((1,65),np.float64) fgdModel = np.zeros((1,65),np.float64) cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT) mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8') result_img = img*mask2[:,:,np.newaxis] return result_img if __name__ == "__main__": output_image = interactive_foreground_extraction("example.jpg") cv2.imwrite("output.png", output_image) ``` 上述代码片段展示了如何利用 OpenCV 库执行基本的交互式前景提取任务。尽管这是一个完整的 Web 解决方案,但它说明了背后涉及的核心原理和技术方法[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值