蜜桃av色欲a片精品一区,麻豆aⅴ精品无码一区二区,亚洲人成网站在线播放影院在线,亚洲 素人 字幕 在线 最新

微立頂科技

新聞資訊

創(chuàng)新 服務(wù) 價(jià)值

  png圖片文件夾自動(dòng)摳除綠幕Py參考

發(fā)布日期:2025/5/30 7:00:31      瀏覽量:

png圖片文件夾自動(dòng)摳除綠幕Py參考


安裝包

pip install opencv-python numpy

pip install pillow



參考Code

import cv2
import numpy as np
import os
from pathlib import Path
import argparse
from PIL import Image

def is_valid_image(file_path):
    """驗(yàn)證文件是否為有效的圖片"""
    try:
        img = Image.open(file_path)
        img.verify()  # 驗(yàn)證文件完整性
        img.close()
        return True
    except Exception as e:
        print(f"無(wú)效圖片: {file_path} - 錯(cuò)誤: {str(e)}")
        return False

def remove_green_screen(input_path, output_path, hsv_lower=(40, 50, 50), hsv_upper=(90, 255, 255), 
                       erode_size=3, dilate_size=5, blur_size=5, edge_threshold=150):
    """
    扣除綠幕背景并進(jìn)行邊緣羽化處理
    
    參數(shù):
    input_path: 輸入圖片路徑
    output_path: 輸出圖片路徑
    hsv_lower: HSV顏色空間下限 (H, S, V)
    hsv_upper: HSV顏色空間上限 (H, S, V)
    erode_size: 腐蝕操作核大小
    dilate_size: 膨脹操作核大小
    blur_size: 高斯模糊核大小 (必須為奇數(shù))
    edge_threshold: 邊緣檢測(cè)閾值
    """
    try:
        # 使用PIL讀取圖片,支持更多格式
        pil_img = Image.open(input_path).convert("RGBA")
        img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGBA2BGRA)
        
        # 轉(zhuǎn)換為HSV顏色空間
        hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        
        # 創(chuàng)建綠色掩碼
        lower_green = np.array(hsv_lower)
        upper_green = np.array(hsv_upper)
        mask = cv2.inRange(hsv, lower_green, upper_green)
        
        # 形態(tài)學(xué)操作減少噪點(diǎn)
        if erode_size > 0:
            kernel = np.ones((erode_size, erode_size), np.uint8)
            mask = cv2.erode(mask, kernel, iterations=1)
        
        if dilate_size > 0:
            kernel = np.ones((dilate_size, dilate_size), np.uint8)
            mask = cv2.dilate(mask, kernel, iterations=1)
        
        # 邊緣羽化處理
        if blur_size > 0:
            mask = cv2.GaussianBlur(mask, (blur_size, blur_size), 0)
        
        # 反向掩碼(保留的區(qū)域)
        mask_inv = cv2.bitwise_not(mask)
        
        # 調(diào)整Alpha通道(邊緣羽化)
        img[:, :, 3] = mask_inv
        
        # 轉(zhuǎn)換回PIL并保存
        result_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGRA2RGBA))
        result_pil.save(output_path, "PNG")
        
        return True
    except Exception as e:
        print(f"處理失敗: {input_path} - 錯(cuò)誤: {str(e)}")
        return False

def process_folder(input_folder, output_folder, **kwargs):
    """處理文件夾中的所有PNG圖片"""
    # 創(chuàng)建輸出文件夾(如果不存在)
    os.makedirs(output_folder, exist_ok=True)
    
    # 遍歷文件夾中的所有文件
    total_files = 0
    success_files = 0
    
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(’.png’):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)
            total_files += 1
            
            # 驗(yàn)證圖片有效性
            if not is_valid_image(input_path):
                continue
            
            # 處理圖片
            if remove_green_screen(input_path, output_path, **kwargs):
                success_files += 1
                print(f"? 已處理: {filename}")
            else:
                print(f"? 處理失敗: {filename}")
    
    return total_files, success_files

def main():
    # 設(shè)置命令行參數(shù)
    parser = argparse.ArgumentParser(description=’綠幕圖片處理工具’)
    parser.add_argument(’--input’, ’-i’, required=True, help=’輸入文件夾路徑’)
    parser.add_argument(’--output’, ’-o’, required=True, help=’輸出文件夾路徑’)
    parser.add_argument(’--hue-lower’, type=int, default=40, help=’HSV色相下限’)
    parser.add_argument(’--hue-upper’, type=int, default=90, help=’HSV色相上限’)
    parser.add_argument(’--saturation-lower’, type=int, default=50, help=’HSV飽和度下限’)
    parser.add_argument(’--saturation-upper’, type=int, default=255, help=’HSV飽和度上限’)
    parser.add_argument(’--value-lower’, type=int, default=50, help=’HSV明度下限’)
    parser.add_argument(’--value-upper’, type=int, default=255, help=’HSV明度上限’)
    parser.add_argument(’--erode-size’, type=int, default=3, help=’腐蝕操作核大小’)
    parser.add_argument(’--dilate-size’, type=int, default=5, help=’膨脹操作核大小’)
    parser.add_argument(’--blur-size’, type=int, default=5, help=’高斯模糊核大小(必須為奇數(shù))’)
    
    args = parser.parse_args()
    
    # 驗(yàn)證輸入輸出路徑
    input_folder = Path(args.input)
    output_folder = Path(args.output)
    
    if not input_folder.exists() or not input_folder.is_dir():
        print(f"錯(cuò)誤: 輸入路徑 ’{input_folder}’ 不存在或不是目錄")
        return
    
    # 設(shè)置HSV參數(shù)
    hsv_lower = (args.hue_lower, args.saturation_lower, args.value_lower)
    hsv_upper = (args.hue_upper, args.saturation_upper, args.value_upper)
    
    # 處理文件夾
    print(f"開始處理文件夾: {input_folder}")
    total, success = process_folder(
        str(input_folder), 
        str(output_folder),
        hsv_lower=hsv_lower,
        hsv_upper=hsv_upper,
        erode_size=args.erode_size,
        dilate_size=args.dilate_size,
        blur_size=args.blur_size
    )
    
    print(f"\n處理結(jié)果:")
    print(f"  總PNG文件數(shù): {total}")
    print(f"  成功處理數(shù): {success}")
    print(f"  失敗數(shù): {total - success}")
    print(f"\n輸出文件夾: {output_folder}")

if __name__ == "__main__":
    main()


啟動(dòng)參數(shù)

python green_screen_remover.py -i 輸入文件夾路徑 -o 輸出文件夾路徑

python green_screen_remover.py -i ./greenscreen_images -o ./processed_images --blur-size 7


--hue-lower 35 --hue-upper 95 # 更廣泛的綠色范圍

--erode-size 2 --dilate-size 6 --blur-size 7 # 更精細(xì)的邊緣處理


hue-lower HSV 色相下限,控制綠色的范圍 35-50
hue-upper HSV 色相上限 85-100
saturation-lower HSV 飽和度下限,過(guò)低會(huì)誤判灰色區(qū)域 40-70
blur-size   羽化模糊程度,值越大邊緣越柔和 3-11(必須奇數(shù))
erode-size     腐蝕操作大小,減少邊緣噪點(diǎn) 1-5
dilate-size     膨脹操作大小,恢復(fù)主體尺寸 3-7


針對(duì)不同綠幕:
亮綠幕:嘗試 --hue-lower 40 --hue-upper 85
深綠幕:嘗試 --hue-lower 35 --hue-upper 90 --saturation-lower 30


精細(xì)調(diào)整邊緣:
邊緣有綠色殘留:增加 dilate-size
邊緣過(guò)度透明:減小 blur-size 或 erode-size


效果

開始處理文件夾: 1
? 已處理: st99.png
? 已處理: tyboy_green.png
? 已處理: 微信圖片_20250401085623.png

處理結(jié)果:
  總PNG文件數(shù): 3
  成功處理數(shù): 3
  失敗數(shù): 0

輸出文件夾: 2





  業(yè)務(wù)實(shí)施流程

需求調(diào)研 →

團(tuán)隊(duì)組建和動(dòng)員 →

數(shù)據(jù)初始化 →

調(diào)試完善 →

解決方案和選型 →

硬件網(wǎng)絡(luò)部署 →

系統(tǒng)部署試運(yùn)行 →

系統(tǒng)正式上線 →

合作協(xié)議

系統(tǒng)開發(fā)/整合

制作文檔和員工培訓(xùn)

售后服務(wù)

馬上咨詢: 如果您有業(yè)務(wù)方面的問(wèn)題或者需求,歡迎您咨詢!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生