Metadata-Version: 2.4
Name: EEBD-GESAM2
Version: 0.1.9
Summary: 一个基于 SAM2 和 Tkinter 的交互式图像分割与标注工具。
Author-email: Yaopeng Han <hanyp@qibebt.ac.cn>
License: MIT License
        
        Copyright (c) 2025 Yaopeng Han
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
Project-URL: Homepage, https://github.com/your-username/your-repo
Project-URL: Bug Tracker, https://github.com/your-username/your-repo/issues
Keywords: sam,sam2,segmentation,annotation,gui,tkinter,pytorch,labelme
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=1.8
Requires-Dist: numpy
Requires-Dist: Pillow
Requires-Dist: opencv-python
Requires-Dist: appdirs>=1.4.4
Dynamic: license-file

# SAM2 交互式图像标注工具

一个基于 Meta 的 Segment Anything Model 2 (SAM2) 和 Tkinter 构建的图形化、交互式图像分割与标注工具。它旨在提供一个简单易用、开箱即用的方式，利用强大的AI模型来辅助进行高精度的图像标注工作。



## 主要功能

✨ **智能分割**: 集成强大的 SAM2 模型，通过点击正/负点进行高质量的掩码预测，极大提升标注效率。

✏️ **手动微调**: 支持手动绘制多边形进行精确标注，或对AI生成的掩码进行补充和修正。

📝 **标签编辑**: 方便地对已完成的标注区域进行标签修改、删除和管理。

🖱️ **多模式操作**: 在 "SAM标注"、"多边形" 和 "编辑标签" 模式间自由切换，应对不同标注场景。

🖼️ **便捷的视图控制**: 支持图像的无级缩放与平移，轻松处理高分辨率大图。

💾 **会话管理**: 自动保存和加载上一次的标注会话，方便随时中断和继续工作。

📄 **格式兼容**: 以与 LabelMe 兼容的 JSON 格式保存标注结果，便于下游任务处理。

🚀 **自动下载**: 首次运行时自动从网络下载所需的模型权重，无需手动配置。

## 主要更新：解决了标注重叠问题！

此版本最重要的核心改进是 **彻底解决了标注区域之间互相重叠的问题**，确保了数据集的干净与高质量。

✔️ **智能防重叠**:

  * **SAM 预测**: 在进行新的 SAM 点选预测时，系统会自动“屏蔽”所有已确认的标注区域。这能确保 SAM 模型只在未被标注的空白区域上生成新的掩码。
  * **多边形绘制**: 当您手动绘制的多边形与已确认区域发生重叠时，重叠的部分会被自动裁切掉，只保留真正有效的标注范围。
  * **交互限制**: 现在无法在已标注的区域内添加新的提示点，从源头上避免了歧义操作。

✔️ **提升易用性**:

  * **模型自动下载**: 无需再手动下载和配置模型路径。首次运行工具时，程序会自动从官方源下载所需的模型文件（约2.5GB）并缓存到本地，未来启动即可直接使用。
  * **打包与分发**: 对项目结构进行了重构和优化，使其能够作为一个标准的 Python 包通过 `pip` 进行安装和分发，并提供了命令行启动方式。

✔️ **Solar panel**:

  * **模型类别添加**: 光伏电板标注类型添加。

✔️ **解决Windows/Mac跨平台交互功能**:

## 安装

安装过程分为两个必要步骤。请务必按顺序执行。

#### ⚠️ 步骤 1: 手动下载并安装前提依赖 `segment-anything-2`

本工具依赖于 Meta 官方的 `segment-anything-2` 库。由于网络原因，直接通过 pip 从 GitHub 安装可能会失败，我们推荐采用更稳定的手动下载安装方式。

1.  **访问官方仓库**：
    请前往 `segment-anything-2` 的官方 GitHub 仓库：
    [https://github.com/facebookresearch/segment-anything-2](https://github.com/facebookresearch/segment-anything-2)

2.  **下载代码 (推荐使用 `git clone`)**：
    打开您的终端，`cd` 到一个您方便存放代码的目录，然后运行以下命令来克隆完整的代码仓库。这是最可靠的方式。

    ```bash
    git clone https://github.com/facebookresearch/segment-anything-2.git
    ```

    > (备选方案：您也可以在 GitHub 页面上点击 `Code` -\> `Download ZIP` 来下载，但 `git clone` 是更专业的做法。)

3.  **从本地安装**：
    下载完成后，进入刚刚创建的文件夹，并使用 `pip` 进行本地安装。

    ```bash
    # 进入下载好的文件夹
    cd segment-anything-2

    # 从当前目录安装
    pip install .
    ```

#### 步骤 2: 安装本工具 `EEBD-GESAM2`

完成上一步后，你就可以通过 PyPI 直接安装本工具了：

```bash
pip install EEBD-GESAM2
```

> **注意**：在首次启动本工具时，程序会自动从网络下载所需的 SAM2 模型权重文件，此过程可能需要一些时间，具体取决于你的网络状况。下载完成后，模型将被缓存，未来启动时将不再需要下载。

## 快速开始

安装完成后，你的系统中就有了一个新的命令行指令。直接在终端中运行它即可启动程序：

```bash
eebd-gesam2
```

程序启动后，会显示图形界面。你可以通过点击 "加载图像" 按钮来选择一个包含多张图片的文件夹，然后开始你的标注工作。

## 许可证

本项目采用 MIT 许可证。详情请见 `LICENSE` 文件。

## 致谢

本项目的开发离不开以下这些优秀的项目和社区：

  * [Segment Anything 2 (SAM2)](https://github.com/facebookresearch/segment-anything-2) by Meta AI
  * [PyTorch](https://pytorch.org/)
  * [OpenCV](https://opencv.org/)
  * Tkinter
