You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV批量统一指甲数据集图片背景以测试CNN模型准确率

指甲数据集统一背景色批量处理方案

核心调整思路:原有代码仅针对白色背景做筛选替换,要适配任意背景的逻辑改为反向筛选保留指甲区域,其余所有区域统一替换为指定背景色,无需识别原背景的颜色范围。

原数据集与代码效果示例:

数据集示例图:
示例图
原代码输入:
输入示例
原代码输出:
输出示例


完整可运行代码

import cv2
import numpy as np
import os
import skimage.exposure

# -------------------------- 可调整参数 --------------------------
# 输入数据集文件夹路径
INPUT_DIR = "your/input/dataset/path"
# 处理后图片输出文件夹路径
OUTPUT_DIR = "your/output/path"
# 目标背景色,BGR格式,默认黑色(0,0,0),可自行修改
TARGET_BG_COLOR = (0, 0, 0)
# 指甲区域HSV阈值范围,可根据实际数据集情况调整
NAIL_HSV_LOW = (0, 40, 50)
NAIL_HSV_HIGH = (25, 255, 255)
# ----------------------------------------------------------------

def process_single_image(img_path, save_path):
    img = cv2.imread(img_path)
    if img is None:
        return
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    # 生成指甲前景掩码
    mask = cv2.inRange(hsv, NAIL_HSV_LOW, NAIL_HSV_HIGH)
    # 形态学操作优化掩码
    kernel = np.ones((3,3), np.uint8)
    mask = cv2.morphologyEx(mask, cv2.MORPH_ERODE, kernel)
    mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
    # 抗锯齿处理
    mask = cv2.GaussianBlur(mask, (0,0), sigmaX=3, sigmaY=3, borderType = cv2.BORDER_DEFAULT)
    mask = skimage.exposure.rescale_intensity(mask, in_range=(127.5,255), out_range=(0,255))
    # 替换背景
    result = np.full_like(img, TARGET_BG_COLOR)
    # 把指甲区域贴到目标背景上
    result[mask > 0] = img[mask > 0]
    cv2.imwrite(save_path, result)

if __name__ == "__main__":
    # 自动创建输出文件夹
    if not os.path.exists(OUTPUT_DIR):
        os.makedirs(OUTPUT_DIR)
    # 支持的图片格式,可自行补充
    img_suffix = ['.jpg', '.jpeg', '.png', '.bmp']
    # 遍历输入文件夹批量处理
    for filename in os.listdir(INPUT_DIR):
        suffix = os.path.splitext(filename)[-1].lower()
        if suffix in img_suffix:
            input_path = os.path.join(INPUT_DIR, filename)
            output_path = os.path.join(OUTPUT_DIR, filename)
            process_single_image(input_path, output_path)
    print("所有图片处理完成")

参数调整说明

  • 路径配置:将INPUT_DIR改为你的原始数据集文件夹路径,OUTPUT_DIR改为处理后图片的保存路径
  • 背景色修改:TARGET_BG_COLOR为BGR格式的颜色值,比如要改为白色就设置为(255,255,255),灰色设置为(128,128,128)
  • 阈值优化:如果出现指甲被误替换、或者背景残留的情况,可微调NAIL_HSV_LOW和NAIL_HSV_HIGH的三个参数,适配你的数据集指甲颜色范围

内容的提问来源于stack exchange,提问作者Pramodi Samaratunga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:42:03