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

Python连续图像蒙版处理:修复单图仅保留1个果蝇观测圆形区域问题

问题原因

你的代码错误是蒙版初始化位置不对导致的:你在遍历3组圆形坐标的循环外创建了全局蒙版,每轮循环都会在上一轮已经画过圆的蒙版上叠加新的圆形,最终越靠后的输出文件夹里的可见圆形数量越多。

修复方案

将蒙版的初始化逻辑移动到遍历圆形配置的循环内部,每次处理单个圆形区域时都新建空白蒙版,即可保证每张输出图仅保留1个对应位置的圆形可见区。

修改后的代码如下:

import os
import cv2
import numpy as np

# 圆形配置:[圆心x, 圆心y, 半径, 输出文件夹路径]
arena_config = [
    [180, 353, 85, "/media/pi/T3 1TB 2Ch xFer/Ramzy Masked /Arena2"],
    [180, 542, 85, "/media/pi/T3 1TB 2Ch xFer/Ramzy Masked /Arena3"],
    [180, 728, 85, "/media/pi/T3 1TB 2Ch xFer/Ramzy Masked /Arena4"],
]

def load_images_from_folder(folder):
    for filename in os.listdir(folder):
        img_path = os.path.join(folder, filename)
        img = cv2.imread(img_path)
        if img is None:
            # 跳过非图像文件避免报错
            continue
        
        for config in arena_config:
            # 每次处理单个圆形配置时新建空白蒙版
            mask = np.zeros(img.shape[:2], dtype="uint8")
            # 仅画当前配置对应的1个圆形
            cv2.circle(mask, (config[0], config[1]), config[2], 255, -1)
            masked = cv2.bitwise_and(img, img, mask=mask)
            # 保存到对应输出文件夹
            cv2.imwrite(os.path.join(config[3], filename), masked)

load_images_from_folder("/media/pi/T3 1TB 2Ch xFer/Ramzy Research Photos/8.17.21")
    
cv2.waitKey(0)
cv2.destroyAllWindows()

额外注意事项

  • 请提前确认三个输出文件夹已创建,否则会触发写入路径不存在的报错
  • 你原始路径中Ramzy Masked 末尾有多余空格,请核对实际路径和配置中的路径是否一致,避免找不到路径的问题

内容的提问来源于stack exchange,提问作者Ramzy Issa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:42:02